Проблема с поворотом объекта
|
|
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 |
|
| |