Страница 1 из 1

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

СообщениеДобавлено: 15 фев 2017, 07:12
jimmm
Можно ли как-то заставить навмешагент стрейфиться боком вправо или лево, или хотябы двигаться спиной назад?? Чтоб он не разворачивался и двигалс в разные стороны продолжая смотреть вперед? Такое возможно вообще?

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

СообщениеДобавлено: 15 фев 2017, 10:17
samana
Можно. У агента есть вкл/выкл автоматического поворота вдоль пути.

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

СообщениеДобавлено: 15 фев 2017, 19:21
jimmm
samana писал(а):Можно. У агента есть вкл/выкл автоматического поворота вдоль пути.

А не могли бы вы примерно показать как это делать? Я никак нигде не смог примеры как можно реализовать движения боком и спиной у навмешагента

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

СообщениеДобавлено: 15 фев 2017, 19:40
samana
Устанавливаете агенту свойство updateRotation в false. Теперь поворот агента в ваших руках, как и обычный объект на сцене. Но какой алгоритм нужен для того, чтобы агент ходил боком или спиной я не знаю, это надо думать. Конечно отталкиваться надо от текущей позиции и предыдущей, находить вектор между ними и разворачивать агента, как-то так.. Сам такого не делал, поэтому конкретно подсказать в виде кода пока нечего.

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

СообщениеДобавлено: 16 фев 2017, 00:39
jimmm
Возможно глупый вопрос задам,
Можно ли как-то быстро высчитать направление Vector3.forward, .back или .left и .right но не в мировом пространстве, а относительно направления движения объекта, то есть локальные вперед назад вправо влево??

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

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

СообщениеДобавлено: 16 фев 2017, 02:09
jimmm
Нущупал некий вариант:
Отключать-уменьшать на нужный момент скорость поворота в навмешагенте, и потом двигать по трансформу влево или вправо, вот некий способ стрейфа,
If(strafeRight == true){
navmeshAgent.angularSpeed =1;
navmeshAgent.move(transform.right);
}

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

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

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


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

Вроде это то, что Вам нужно.