Ограничение поворота обьекта
| |
Artemoid | Дата: Понедельник, 13 Апреля 2015, 19:18 | Сообщение # 1 |
частый гость
Сейчас нет на сайте
| Всем привет! Надо ограничить угол, на который может поворачиваться камера. Как? Вот скрипт: float verticalSpeed = 2.0F;
void Update () { float h = -verticalSpeed * Input.GetAxis ("Mouse Y"); transform.Rotate (h, 0, 0); }
Напишите пожалуйста его же, но уже с с ограниченным обзором и желательно обьясните всё это. заранее спасибо!
|
|
| |
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 |
почти ветеран
Сейчас нет на сайте
| нуууу... это ж мы все из рода ясновидящих... танк, башня, ствол. и нихрена непонятно, иногда скриншот со стрелочками помогает с описанием проблемы. например, "вот мой скрипт (сам код скрипта) висит на башне. Пушка является дочерним объектом башни. Башня является дочерним объектом танка. так вот когда я башню кручу, то ствол пушки вверх-вниз не задирается, и это правильно: ведь на нем нет никакого скрипта.." есть грамонтное описание пробемы. "Подскажите, куда мне что подвесить." Пробовал смотреть уроки здесь, здесь, здесь, что-то я не понимаю как работает вот этот скрипт..." это есть более грамотная просьба
http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг VKонтакте 3Dbuffer
Последнее:
Новый раздел "Текстуры"
Как запатентовать, защитить техническое решение, игру, идею
|
|
| |
Artemoid | Дата: Пятница, 17 Апреля 2015, 10:35 | Сообщение # 10 |
частый гость
Сейчас нет на сайте
| Цитата MANMANA ( ) нуууу... это ж мы все из рода ясновидящих... танк, башня, ствол. и нихрена непонятно, иногда скриншот со стрелочками помогает с описанием проблемы. например, "вот мой скрипт (сам код скрипта) висит на башне. Пушка является дочерним объектом башни. Башня является дочерним объектом танка. так вот когда я башню кручу, то ствол пушки вверх-вниз не задирается, и это правильно: ведь на нем нет никакого скрипта.." есть грамонтное описание пробемы. "Подскажите, куда мне что подвесить." Пробовал смотреть уроки здесь, здесь, здесь, что-то я не понимаю как работает вот этот скрипт..." это есть более грамотная просьба smile ну в прицепе верно.. На башне висит скрипт поворота( с ним нет проблем). Ствол, который дочерний по отношению к башне должен крутиться по оси Y из-за поворота самой башни. Самостоятельно должен крутиться только по оси X и только градусов на 30 вверх и вниз. На стволе тоже стоит скрипт, но другой(вы мне его сами кинули)но он смотрит в ту точку(по оси Y) в которую смотрел до запуска игрового режима. КАК это исправить?
|
|
| |
|