Найти в Дзене

#3 Пишем скрипт движения персонажа в Unity (2D)

Привет! Сегодня мы напишем скрипт для передвижения нашего персонажа (белого квадрата пока что), для этого мы в прошлый раз создали скрипт и прикрепили его к нашему персонажу: Был написан данный скрипт для движений персонажа на кнопки WASD в соответствующие традиционные стороны: 1) метод Start: • Получает компонент Rigidbody2D, прикрепленный к тому же игровому объекту. • Устанавливает gravityScale (масштаб гравитации) в 0, чтобы персонаж не падал под действием гравитации (что типично для игр с видом сверху или без вертикальной физики). 2) метод Update: • Каждый кадр сбрасывает текущее направление движения. • Проверяет, какие из клавиш W, S, A, D нажаты. • В зависимости от нажатых клавиш, формирует вектор move (направление движения). • Нормализует вектор move (move.normalized), чтобы движение по диагонали не было быстрее, чем по горизонтали или вертикали. 3) метод FixedUpdate: • Этот метод вызывается с фиксированной частотой, что идеально подходит для физических расчетов. • Устан

Привет! Сегодня мы напишем скрипт для передвижения нашего персонажа (белого квадрата пока что), для этого мы в прошлый раз создали скрипт и прикрепили его к нашему персонажу:

Добавленные персонажу (player) атрибуты справа
Добавленные персонажу (player) атрибуты справа

Был написан данный скрипт для движений персонажа на кнопки WASD в соответствующие традиционные стороны:

тут мы настроили переменные для персонажа
тут мы настроили переменные для персонажа

1) метод Start:

• Получает компонент Rigidbody2D, прикрепленный к тому же игровому объекту.

• Устанавливает gravityScale (масштаб гравитации) в 0, чтобы персонаж не падал под действием гравитации (что типично для игр с видом сверху или без вертикальной физики).

-3
-4

2) метод Update:

• Каждый кадр сбрасывает текущее направление движения.

• Проверяет, какие из клавиш W, S, A, D нажаты.

• В зависимости от нажатых клавиш, формирует вектор move (направление движения).

• Нормализует вектор move (move.normalized), чтобы движение по диагонали не было быстрее, чем по горизонтали или вертикали.

3) метод FixedUpdate:

• Этот метод вызывается с фиксированной частотой, что идеально подходит для физических расчетов.

• Устанавливает linearVelocity (линейную скорость) Rigidbody2D персонажа, используя рассчитанный вектор move, умноженный на moveSpeed (скорость перемещения), заставляя персонажа двигаться в нужном направлении.

Таким образом, скрипт позволяет игроку перемещать персонажа с помощью клавиш WASD, используя физику Unity.
Провели тесты движения и наш скрипт успешно отработал, логгер показывал куда двигается персонаж корректно, а сам персонаж двигался и не падал, как если бы был случай со включенной гравитацией, что нашей игре не совсем подходит.

На сегодня остановимся на этом, спасибо за прочтение, поддержите меня подпиской и лайком, а также оставляйте комментарии, до скорого!