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