Для того чтобы реализовать передвижение персонажа в Unity 2D, изменяя его основной вектор направления, можно использовать компонент Rigidbody2D и скрипт написанный на языке C#.
В начале, добавьте компонент Rigidbody2D к объекту персонажа. Rigidbody2D - это компонент, который позволяет объекту взаимодействовать с физикой, что позволит нам легко изменять движение персонажа.
Для управления персонажем создайте новый скрипт, например, "PlayerMovement", и присвойте его объекту персонажа. Откройте скрипт в выбранной среде разработки.
В начале скрипта объявите несколько переменных:
public float movementSpeed = 5f; Rigidbody2D rb; Vector2 movement;
Переменная movementSpeed определяет скорость перемещения персонажа, rb будет использоваться для получения доступа к компоненту Rigidbody2D, а movement будет использоваться для хранения направления движения персонажа.
Затем, в методе Start(), инициализируйте переменную rb:
void Start() { rb = GetComponent<Rigidbody2D>(); }
В методе Update() обработайте ввод пользователя для перемещения персонажа:
void Update() { movement.x = Input.GetAxis("Horizontal"); movement.y = Input.GetAxis("Vertical"); }
Input.GetAxis("Horizontal") и Input.GetAxis("Vertical") возвращают значения от -1 до 1 в зависимости от нажатых клавиш (или левой и правой стрелок на клавиатуре). Полученные значения определяют направление движения персонажа по горизонтали и вертикали.
Далее в методе FixedUpdate() используйте полученный вектор movement для перемещения персонажа:
void FixedUpdate() { rb.MovePosition(rb.position + movement * movementSpeed * Time.fixedDeltaTime); }
В данном методе используется метод MovePosition() для перемещения персонажа. Мы прибавляем к текущей позиции персонажа вектор движения, умноженный на скорость перемещения и deltaTime для обеспечения плавного движения независимо от частоты кадров.
Теперь при нажатии на клавиши стрелок или WASD персонаж будет двигаться в соответствующем направлении с заданной скоростью.
Не забудьте добавить компонент Rigidbody2D на объект персонажа и присвоить скрипт PlayerMovement.
Это лишь базовый пример реализации передвижения персонажа в Unity 2D с использованием основного вектора направления. Вы можете доработать его, добавив анимации, проверки на столкновения и другие функциональности в зависимости от требований вашей игры.