Четверг, 02 Мая 2024, 18:07

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Ограничение поворота обьекта (Помогите..)
Ограничение поворота обьекта
ArtemoidДата: Понедельник, 13 Апреля 2015, 19:18 | Сообщение # 1
частый гость
Сейчас нет на сайте
Всем привет! Надо ограничить угол, на который может поворачиваться камера. Как?
Вот скрипт:
float verticalSpeed = 2.0F;

void Update () {

float h = -verticalSpeed * Input.GetAxis ("Mouse Y");
transform.Rotate (h, 0, 0);
}

Напишите пожалуйста его же, но уже с с ограниченным обзором и желательно обьясните всё это.
заранее спасибо! smile
MANMANAДата: Понедельник, 13 Апреля 2015, 20:08 | Сообщение # 2
почти ветеран
Сейчас нет на сайте
Код
using UnityEngine;
using System.Collections;

public class CamMove : MonoBehaviour {

float verticalSpeed = 2.0F;
Vector3 rot;//объявляем переменную для хранения текущей ориентации ГО в углах Эйлера
float yLimit = 20.0f;//максимум/минимум верх-низ

//[url=http://docs.unity3d.com/ScriptReference/Mathf.Clamp.html]Mathf.Clamp[/url] функция, ограничивающая значение переменной максимумом и минимумом
void Start()
{
rot = transform.eulerAngles;//сохраняем в rot текущую ориентацию (угол наклона) камеры в углах Эйлера
}
void Update ()
{
float h = - verticalSpeed * Input.GetAxis("Mouse Y");//записываем в переменную изменение угла наклона камеры в зависимости от положения мыши по оси Y
rot.x = Mathf.Clamp(rot.x + h, -yLimit, yLimit);//записываем в переменную rot (а точне в ее х-часть) значение, ограниченное минимум и максимумом
transform.eulerAngles = rot;//устанавливаем новую ориентацию ГО в углах Эйлера

}
}


transform.eulerAngles
Mathf.Clamp функция, ограничивающая значение переменной максимумом и минимумом


http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг
VKонтакте 3Dbuffer

Последнее:

Новый раздел "Текстуры"

Как запатентовать, защитить техническое решение, игру, идею


Сообщение отредактировал MANMANA - Понедельник, 13 Апреля 2015, 20:08
ArtemoidДата: Понедельник, 13 Апреля 2015, 20:33 | Сообщение # 3
частый гость
Сейчас нет на сайте
Цитата MANMANA ()
Дата: Понедельник, сегодня, 20:08 | Сообщение # 2
заслуженный участник
Сообщений: 505
Всего наград: 0
Репутация: 158 ±
Замечания: 0%
Сейчас на сайте

Код
using UnityEngine;
using System.Collections;

public class CamMove : MonoBehaviour {

float verticalSpeed = 2.0F;
Vector3 rot;//объявляем переменную для хранения текущей ориентации ГО в углах Эйлера
float yLimit = 20.0f;//максимум/минимум верх-низ

//Mathf.Clamp функция, ограничивающая значение переменной максимумом и минимумом
void Start()
{
rot = transform.eulerAngles;//сохраняем в rot текущую ориентацию (угол наклона) камеры в углах Эйлера
}
void Update ()
{
float h = - verticalSpeed * Input.GetAxis("Mouse Y");//записываем в переменную изменение угла наклона камеры в зависимости от положения мыши по оси Y
rot.x = Mathf.Clamp(rot.x + h, -yLimit, yLimit);//записываем в переменную rot (а точне в ее х-часть) значение, ограниченное минимум и максимумом
transform.eulerAngles = rot;//устанавливаем новую ориентацию ГО в углах Эйлера

}
}

transform.eulerAngles
Mathf.Clamp функция, ограничивающая значение переменной максимумом и минимумом


Интересно) но обьект так и ломится смотреть вперёд(зависит от другого обьекта который крутится) и как исправить? Я так и не могу понять почему он так делает..почему же?
PATCH1Дата: Понедельник, 13 Апреля 2015, 21:27 | Сообщение # 4
заслуженный участник
Сейчас нет на сайте
Цитата Artemoid ()
Интересно) но обьект так и ломится смотреть вперёд(зависит от другого обьекта который крутится) и как исправить? Я так и не могу понять почему он так делает..почему же?

Гляньте стандартные скрипты типа FreeLook там можно галочки ставить, по какой оси (Z,X,Y) заблокировать вращение
MANMANAДата: Понедельник, 13 Апреля 2015, 21:46 | Сообщение # 5
почти ветеран
Сейчас нет на сайте
Цитата Artemoid ()
Интересно) но обьект так и ломится смотреть вперёд(зависит от другого обьекта который крутится) и как исправить? Я так и не могу понять почему он так делает..почему же?

может, нужно смотреть и читать уроки?
скрипт рабочий, я у себя тестил на камере. а вот что там у Вас еще от чего зависит я не знаю.


http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг
VKонтакте 3Dbuffer

Последнее:

Новый раздел "Текстуры"

Как запатентовать, защитить техническое решение, игру, идею
ArtemoidДата: Понедельник, 13 Апреля 2015, 21:47 | Сообщение # 6
частый гость
Сейчас нет на сайте
Цитата PATCH1 ()
Гляньте стандартные скрипты типа FreeLook там можно галочки ставить, по какой оси (Z,X,Y) заблокировать вращение

Кое что понял...получается, что в скрипте мы указываем конкретные значение повората по оси y. И он упорно держит это значение.
Как сделать так, чтобы она была не конкретно этого значения?
MANMANAДата: Понедельник, 13 Апреля 2015, 23:07 | Сообщение # 7
почти ветеран
Сейчас нет на сайте
Цитата Artemoid ()
Как сделать так, чтобы она была не конкретно этого значения?

все в коде и даже с комментариями
Цитата Artemoid ()
float yLimit = 20.0f;//максимум/минимум верх-низ

можно эту строку заменить на
Код
float yLimitUp = 40.0f;
float yLimitDown = 20.0f;

а вот эту строку
Код
rot.x = Mathf.Clamp(rot.x + h, -yLimit, yLimit);//записываем в переменную rot (а точне в ее х-часть) значение, ограниченное минимум и максимумом

на
Код
rot.x = Mathf.Clamp(rot.x + h, -yLimitDown, yLimitUp);//записываем в переменную rot (а точне в ее х-часть) значение, ограниченное минимум и максимумом


http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг
VKонтакте 3Dbuffer

Последнее:

Новый раздел "Текстуры"

Как запатентовать, защитить техническое решение, игру, идею


Сообщение отредактировал MANMANA - Понедельник, 13 Апреля 2015, 23:09
ArtemoidДата: Четверг, 16 Апреля 2015, 21:12 | Сообщение # 8
частый гость
Сейчас нет на сайте
Цитата MANMANA ()

Сообщений: 516
Всего наград: 0
Репутация: 162 ±
Замечания: 0%
Сейчас нет на сайте

Цитата Artemoid ()
Как сделать так, чтобы она была не конкретно этого значения?

все в коде и даже с комментариями
Цитата Artemoid ()
float yLimit = 20.0f;//максимум/минимум верх-низ

можно эту строку заменить на
Код
float yLimitUp = 40.0f;
float yLimitDown = 20.0f;

а вот эту строку
Код
rot.x = Mathf.Clamp(rot.x + h, -yLimit, yLimit);//записываем в переменную rot (а точне в ее х-часть) значение, ограниченное минимум и максимумом

на
Код
rot.x = Mathf.Clamp(rot.x + h, -yLimitDown, yLimitUp);//записываем в переменную rot (а точне в ее х-часть) значение, ограниченное минимум и максимумом

Сообщение отредактировал MANMANA - П

Мда... я всё так написал. У меня по оси x всё ограничено и хорошо, но когда я пытаюсь крутить башней(а именно у меня башня танка) , то ствол как бы следует за ней и сохраняет нужную позицию, но упорно смотрит в одну и ту же точку(в которую смотрел перед игрового режима). Соответственно проходит насквозь башни...
Может это я такой тупой, что мне надо всё обьяснить, но почему он не хочет менять свой y?
MANMANAДата: Четверг, 16 Апреля 2015, 22:02 | Сообщение # 9
почти ветеран
Сейчас нет на сайте
нуууу... это ж мы все из рода ясновидящих...
танк, башня, ствол. и нихрена непонятно, иногда скриншот со стрелочками помогает с описанием проблемы.
например, "вот мой скрипт (сам код скрипта) висит на башне. Пушка является дочерним объектом башни. Башня является дочерним объектом танка. так вот когда я башню кручу, то ствол пушки вверх-вниз не задирается, и это правильно: ведь на нем нет никакого скрипта.." есть грамонтное описание пробемы.
"Подскажите, куда мне что подвесить." Пробовал смотреть уроки здесь, здесь, здесь, что-то я не понимаю как работает вот этот скрипт..." это есть более грамотная просьба smile


http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг
VKонтакте 3Dbuffer

Последнее:

Новый раздел "Текстуры"

Как запатентовать, защитить техническое решение, игру, идею
ArtemoidДата: Пятница, 17 Апреля 2015, 10:35 | Сообщение # 10
частый гость
Сейчас нет на сайте
Цитата MANMANA ()
нуууу... это ж мы все из рода ясновидящих...
танк, башня, ствол. и нихрена непонятно, иногда скриншот со стрелочками помогает с описанием проблемы.
например, "вот мой скрипт (сам код скрипта) висит на башне. Пушка является дочерним объектом башни. Башня является дочерним объектом танка. так вот когда я башню кручу, то ствол пушки вверх-вниз не задирается, и это правильно: ведь на нем нет никакого скрипта.." есть грамонтное описание пробемы.
"Подскажите, куда мне что подвесить." Пробовал смотреть уроки здесь, здесь, здесь, что-то я не понимаю как работает вот этот скрипт..." это есть более грамотная просьба smile

ну в прицепе верно..
На башне висит скрипт поворота( с ним нет проблем). Ствол, который дочерний по отношению к башне должен крутиться по оси Y из-за поворота самой башни. Самостоятельно должен крутиться только по оси X и только градусов на 30 вверх и вниз. На стволе тоже стоит скрипт, но другой(вы мне его сами кинули)но он смотрит в ту точку(по оси Y) в которую смотрел до запуска игрового режима. КАК это исправить?
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Ограничение поворота обьекта (Помогите..)
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг