Четверг, 25 Апреля 2024, 18:14

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Проблема с поворотом объекта
Проблема с поворотом объекта
lakorisДата: Понедельник, 21 Июля 2014, 17:00 | Сообщение # 1
постоянный участник
Сейчас нет на сайте
Объект поворачивается к точке, которую я выберу курсором на карте (кидается рейкаст, считываются координаты. не суть).
Поворот осуществляю таким образом:

Код

                     Vector3 dir = needPos - Player.position;
                     dir.y = 0;
                     Quaternion rot = Quaternion.LookRotation(dir);
                     Player.rotation = Quaternion.Lerp(Player.rotation, rot, Time.deltaTime * 5);


Далее нужно проверить: если мы повернлись достаточно, т.е. смотрим уже на ту самую точку - двигаемся к ней.
Код
if(Player.rotation != rot)
                     Player.rotation = Quaternion.Lerp(Player.rotation, rot, Time.deltaTime * 5);
                     else
                     Player.position = Vector3.MoveTowards(Player.position, needPos, Time.deltaTime * 5);


Проблема в том, что если мы выберем точку ЗА спиной объекта, градусы будут отрицательные, а в условии мы ждем положительных. И получается, что объект поворачивается на точку, но не двигается, т.к. условие не выполняется.
Пробовал брать в условии не сами градусы поворота, а их модуль, дабы отрицательного числа не получилось, но все-же, не срабатывает условие.
berilДата: Понедельник, 21 Июля 2014, 17:20 | Сообщение # 2
Я не ленивый, я — энергосберегающий
Сейчас нет на сайте
Нужно брать абсолютное значение Mathf.Abs
вообщето мне непонятно само уловие




Накодил? Убери за собой!
Инвентарь в Unity(UI)
Инвентарь в Unity(GUI)


Сообщение отредактировал beril - Понедельник, 21 Июля 2014, 17:21
lakorisДата: Понедельник, 21 Июля 2014, 17:42 | Сообщение # 3
постоянный участник
Сейчас нет на сайте
Цитата beril ()
Нужно брать абсолютное значение Mathf.Abs

Цитата lakoris ()
Пробовал брать в условии не сами градусы поворота, а их модуль, дабы отрицательного числа не получилось, но все-же, не срабатывает условие.


Цитата beril ()
вообщето мне непонятно само уловие

Если наш поворот не равен задуманному - поворачиваемся. Иначе - бежим
GantZ_YakaДата: Понедельник, 21 Июля 2014, 18:50 | Сообщение # 4
почетный гость
Сейчас нет на сайте
Для таких задач знать один конечный угол недостаточно, - нужно еще находить кротчайший путь поворота к этому углу, для этого определять в какой "четверти" относительно системы координат персонажа находится цель, оттуда уже узнавать в какую сторону его вращать и каким должен получиться знак. Решал похожую задачу в навигации на мини-карте.

Сообщение отредактировал GantZ_Yaka - Понедельник, 21 Июля 2014, 18:51
allodsДата: Понедельник, 21 Июля 2014, 19:39 | Сообщение # 5
почти ветеран
Сейчас нет на сайте
я делаю так
кручу пустой обжект туда куда надо через LookAt
потом через Mathf.MoveTowardsAngle уже нужный мне обжект к пустому обжекту
ЛевшаДата: Понедельник, 21 Июля 2014, 21:58 | Сообщение # 6
почти ветеран
Сейчас нет на сайте
Цитата lakoris ()
Проблема в том, что если мы выберем точку ЗА спиной объекта, градусы будут отрицательные, а в условии мы ждем положительных.

Vector3.angle() - не имеет отрицательных значений.
[u][b]http://docs.unity3d.com/ScriptR....u]


X.cor.R (Prologue)

Сообщение отредактировал Левша - Понедельник, 21 Июля 2014, 21:58
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Проблема с поворотом объекта
  • Страница 1 из 1
  • 1
Поиск:

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