Как заставить navmeshAgent стрейфиться?

Общие вопросы о Unity3D

Как заставить navmeshAgent стрейфиться?

Сообщение jimmm 15 фев 2017, 07:12

Можно ли как-то заставить навмешагент стрейфиться боком вправо или лево, или хотябы двигаться спиной назад?? Чтоб он не разворачивался и двигалс в разные стороны продолжая смотреть вперед? Такое возможно вообще?
jimmm
UNIверсал
 
Сообщения: 417
Зарегистрирован: 23 янв 2013, 22:57

Re: Как заставить navmeshAgent стрейфиться?

Сообщение samana 15 фев 2017, 10:17

Можно. У агента есть вкл/выкл автоматического поворота вдоль пути.
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: Как заставить navmeshAgent стрейфиться?

Сообщение jimmm 15 фев 2017, 19:21

samana писал(а):Можно. У агента есть вкл/выкл автоматического поворота вдоль пути.

А не могли бы вы примерно показать как это делать? Я никак нигде не смог примеры как можно реализовать движения боком и спиной у навмешагента
jimmm
UNIверсал
 
Сообщения: 417
Зарегистрирован: 23 янв 2013, 22:57

Re: Как заставить navmeshAgent стрейфиться?

Сообщение samana 15 фев 2017, 19:40

Устанавливаете агенту свойство updateRotation в false. Теперь поворот агента в ваших руках, как и обычный объект на сцене. Но какой алгоритм нужен для того, чтобы агент ходил боком или спиной я не знаю, это надо думать. Конечно отталкиваться надо от текущей позиции и предыдущей, находить вектор между ними и разворачивать агента, как-то так.. Сам такого не делал, поэтому конкретно подсказать в виде кода пока нечего.
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: Как заставить navmeshAgent стрейфиться?

Сообщение jimmm 16 фев 2017, 00:39

Возможно глупый вопрос задам,
Можно ли как-то быстро высчитать направление Vector3.forward, .back или .left и .right но не в мировом пространстве, а относительно направления движения объекта, то есть локальные вперед назад вправо влево??

navmeshagent.move(vector3.back.normalise); нечто вроди такого??
jimmm
UNIверсал
 
Сообщения: 417
Зарегистрирован: 23 янв 2013, 22:57

Re: Как заставить navmeshAgent стрейфиться?

Сообщение jimmm 16 фев 2017, 02:09

Нущупал некий вариант:
Отключать-уменьшать на нужный момент скорость поворота в навмешагенте, и потом двигать по трансформу влево или вправо, вот некий способ стрейфа,
If(strafeRight == true){
navmeshAgent.angularSpeed =1;
navmeshAgent.move(transform.right);
}
jimmm
UNIверсал
 
Сообщения: 417
Зарегистрирован: 23 янв 2013, 22:57

Re: Как заставить navmeshAgent стрейфиться?

Сообщение Xtir 18 фев 2017, 00:33

jimmm писал(а):Возможно глупый вопрос задам,
Можно ли как-то быстро высчитать направление Vector3.forward, .back или .left и .right но не в мировом пространстве, а относительно направления движения объекта, то есть локальные вперед назад вправо влево??

navmeshagent.move(vector3.back.normalise); нечто вроди такого??


transform.InverseTransformDirection(GetComponent<Rigidbody>().velocity)
transform.InverseTransformDirection(GetComponent<NavMeshAgent>().velocity)

Вроде это то, что Вам нужно.
Xtir
UNIверсал
 
Сообщения: 498
Зарегистрирован: 21 окт 2016, 00:37


Вернуться в Общие вопросы

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 10