Если я правильно понял ваш вопрос, вы хотите ограничить движение ваших персонажей с помощью 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;