Top.Mail.Ru
Ответы

Как в Unity зафиксировать движение по заданным осям?

Приветствую! Хочу сделать движение объекта по заданным осям. Мне необходимо, чтобы игрок двигался только вверх-вниз, влево-вправо. Я написал скрипт движения, но если зажать, допустим, вперед и вправо, то объект начинает двигаться наискосок. В RigidBody заморозить оси тоже не получится, потому что игрок будет двигаться только по одной оси. Буду очень благодарен за помощь!

По дате
По рейтингу
Аватар пользователя
Мудрец

Но если ты зажал обе кнопки, то как ты еще хочешь чтобы он двигался? Тебе нужно отдать приоритет либо forward либо right. Это можно сделать например введя 2 доп свойства типа bool для оси vertical и horizontal которые будут устанавливаться в true при нажатии ws и ad а при отпускании в false. При этом если ws уже стоит в true то вычисление horizontal происходить не будет а его вектор можно сделать просто равным Vector3. one это чтобы не пришлось менять ничего в коде. Точно также с ad по аналогии. В этом случае каждый новый кадр скрипт будет смотреть на эти булевы флаги и исходя из их значений игнорировать вычисление одной из осей принимая его равным Vector3. one.
Думаю аналогично вы можете сделать это и через rb блокируя оси из скрипта, но это теже яйца по сути, а эффективность при этом будет только хуже.

Аватар пользователя
Мастер

Для того, чтобы зафиксировать движение по заданным осям в Unity, вам необходимо использовать компонент Input. В этом компоненте вы можете установить коэффициенты для каждой оси движения. Это позволит вам ограничить движение объекта по заданным осям.