Настраиваемое движение и вращение НавеМеш в Unity - PullRequest
0 голосов
/ 26 августа 2018

Я не нахожу ничего полезного для реализации пользовательского перемещения и поворота для NavMesh в Unity.Я не хочу использовать рулевую часть компонента Nav Mesh Agent, но я хочу использовать навигацию по препятствиям NavMesh и поиск путей.

1 Ответ

0 голосов
/ 26 августа 2018

Если я правильно понял ваш вопрос, вы хотите ограничить движение ваших персонажей с помощью NavMesh вместо использования коллайдеров.

Например, у меня есть робот на холме, которым я управляю с помощью кнопок со стрелками, и я не хочу, чтобы он упал с обрыва.

В моем случае мой персонаж имел компонент Character Controller. Все, что мне нужно было сделать, это добавить компонент Nav Mesh Agent к своему персонажу, рядом с компонентом Character Controller.

Важно! На земле, на которой стоит ваш персонаж, должно быть Collider любого типа, например Box Collider, потому что, когда я отключил Box Collider, прикрепленный к земле, мой персонаж не был может двигаться, но вам не нужно прикреплять коллайдеры к вашим препятствиям. Изготовление их Navigation Static и выпечка NavMesh делают свое дело.

Я не реализовал никакого дополнительного кода относительно компонента Nav Mesh Agent. Мой RobotController.cs работал нормально.

Переменные в разделе Steering Nav Mesh Agent, такие как Speed, Angular Speed & Acceleration, не переопределяют те, которые я реализовал в своем скрипте RobotController.

Краткое описание

У моего персонажа есть компоненты:

  • Character Controller
  • RobotController.cs
  • Nav Mesh Agent

в этом порядке, и RobotController.cs так же прост:

if (Input.GetKey (KeyCode.UpArrow)) {
  if(speed < maxVelocity)
    speed += acceleration * Time.fixedDeltaTime;
  else
    speed = maxVelocity; 
}

velocity.x = (transform.forward * speed).x;
velocity.z = (transform.forward * speed).z;
...