C# Unity 2D. Как сделать передвижение персонажа, изменяя его основной вектор направления?

Для того чтобы реализовать передвижение персонажа в 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 с использованием основного вектора направления. Вы можете доработать его, добавив анимации, проверки на столкновения и другие функциональности в зависимости от требований вашей игры.