#c# #unity3d #game-development
Вопрос:
Допустим, у меня есть путь, который может быть линией или кривой в Unity, и я хотел, чтобы мой игрок мог привязаться к этому пути и двигаться по нему, как бы я этого достиг. Это было бы похоже либо на систему прикрытия, либо на что-то похожее на то, как работают выступы в Sly Cooper.
Ответ №1:
В то время как если вы хотите, чтобы движение вашего игрока шло по определенному пути , существует так называемая техника WayPoint
, которая просто использует встроенную навигационную систему в Unity. Существует так много статей, в которых вас учат, как вручную построить такую систему точек доступа, и в то же время вы можете получить модуль SimpleWayPoint в интернет-магазине активов.
Но если ваш плеер управляется пользователем, что означает, что пользователь может контролировать его движение, скажем, нажатие кнопки » W «означает движение вперед, а нажатие кнопки» S » означает движение назад, а движение влево и вправо ограничено определенным вами путем, к сожалению, я не нашел какой-либо зрелой технологии, которая позволяет реализовать эти ограничения.
Однако, в проекте я сделал несколько месяцев назад, я вручную ручкой координаты успешно, поскольку я создаю города, улицы строго соблюдать горизонтальные и вертикальные линии сетки, я могу легко осуществляет контроль целевого объекта GameObject это X and Y coordinates
, либо используя встроенный замораживания координат по API или ручное обнуление оси значений снова и снова в обновление() метод. Поэтому, возможно, вы могли бы использовать метод Update() для ограничения координат целей путем динамического вычисления их координат с использованием функций, представляющих путь, но я могу себе представить, насколько это было бы сложно.
Ответ №2:
Вы можете попробовать использовать navmeshagent, который будет включен, как только игрок захочет использовать это «автоматическое перемещение». В своем коде вы можете указать пункт назначения, а в своей сцене вы можете создать навигационную сеть, которая может иметь любую форму, которая вам нравится
Ответ №3:
Вы можете сделать это с помощью:
- Отметьте позицию, с которой вы хотите, чтобы ваш игрок НЕ двигался вперед/не пересекал линию.
- В своем сценарии укажите должность.
Логические
если позиция игрока > позиция отмечена, то остановите движение,
синтаксис
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-контуры