Привязка игрока к единству пути

#c# #unity3d #game-development

Вопрос:

Допустим, у меня есть путь, который может быть линией или кривой в Unity, и я хотел, чтобы мой игрок мог привязаться к этому пути и двигаться по нему, как бы я этого достиг. Это было бы похоже либо на систему прикрытия, либо на что-то похожее на то, как работают выступы в Sly Cooper.

Ответ №1:

В то время как если вы хотите, чтобы движение вашего игрока шло по определенному пути , существует так называемая техника WayPoint , которая просто использует встроенную навигационную систему в Unity. Существует так много статей, в которых вас учат, как вручную построить такую систему точек доступа, и в то же время вы можете получить модуль SimpleWayPoint в интернет-магазине активов.
Но если ваш плеер управляется пользователем, что означает, что пользователь может контролировать его движение, скажем, нажатие кнопки » W «означает движение вперед, а нажатие кнопки» S » означает движение назад, а движение влево и вправо ограничено определенным вами путем, к сожалению, я не нашел какой-либо зрелой технологии, которая позволяет реализовать эти ограничения.
Однако, в проекте я сделал несколько месяцев назад, я вручную ручкой координаты успешно, поскольку я создаю города, улицы строго соблюдать горизонтальные и вертикальные линии сетки, я могу легко осуществляет контроль целевого объекта GameObject это X and Y coordinates , либо используя встроенный замораживания координат по API или ручное обнуление оси значений снова и снова в обновление() метод. Поэтому, возможно, вы могли бы использовать метод Update() для ограничения координат целей путем динамического вычисления их координат с использованием функций, представляющих путь, но я могу себе представить, насколько это было бы сложно.

Ответ №2:

Вы можете попробовать использовать navmeshagent, который будет включен, как только игрок захочет использовать это «автоматическое перемещение». В своем коде вы можете указать пункт назначения, а в своей сцене вы можете создать навигационную сеть, которая может иметь любую форму, которая вам нравится

Ответ №3:

Вы можете сделать это с помощью:

  1. Отметьте позицию, с которой вы хотите, чтобы ваш игрок НЕ двигался вперед/не пересекал линию.
  2. В своем сценарии укажите должность.

Логические

если позиция игрока > позиция отмечена, то остановите движение,

синтаксис

 private void update(){
    if(transform.position.x < -10){
    transform.position = new Vector3(-10, transform.position.y, transform.position.z); // Here you can either use `Vector3` or `Vector2`  according to your game
    }
}
 

Комментарии:

1. Поэтому я думаю, что это решает проблему простой линии на оси, но не отвечает ни за что более сложное, например, за кривые или 3d-контуры