Поворачивайся в направлении движения
Часть раздела Ввод и перемещение путешествия по Godot на Coddy. Урок 20 из 28.
Герой нарисован лицом вправо и продолжает смотреть вправо, когда бежит влево.
Всё, что вы видите у героя, находится в его дочернем узле Look. Значение scale.x, равное -1, зеркально отражает узел и его дочерние узлы слева направо. Поэтому отразите Look:
if direction > 0:
$Look.scale.x = 1
if direction < 0:
$Look.scale.x = -1Не отражайте сам CharacterBody2D, чтобы его форма столкновения оставалась прежней. Если ни одна клавиша не нажата, direction равен 0 и ни один из операторов if не выполняется. Герой продолжает смотреть в ту сторону, куда двигался в последний раз.
Задание
ЛегкоСделай так, чтобы герой смотрел в сторону движения.
- Перед
move_and_slide()установи$Look.scale.xв1, когдаdirection > 0. - Установи его в
-1, когдаdirection < 0.
Нажми «Играть» и побеги влево: герой повернётся влево и продолжит смотреть влево, когда ты остановишься. Затем нажми «Проверить».
Попробуйте сами
extends CharacterBody2D
var speed = 220
var acceleration = 900
var friction = 2400
var gravity = 1000
var jump_velocity = -500
func _physics_process(delta):
velocity.y += gravity * delta
if Input.is_action_just_pressed("jump") and is_on_floor():
velocity.y = jump_velocity
var direction = Input.get_axis("move_left", "move_right")
if direction == 0:
velocity.x = move_toward(velocity.x, 0, friction * delta)
else:
velocity.x = move_toward(velocity.x, direction * speed, acceleration * delta)
move_and_slide()
Все уроки раздела Ввод и перемещение
1Действия ввода
Нажми, чтобы двигатьсяВлево и вправоОдна осьЧетыре направленияТолько что нажатоНеобработанный ввод4Плавное движение
Плавное ускорениеТрениеПоворачивайся в направлении движенияНе выходи за границы экранаОграничение по обеим осямПотренируйтесь самостоятельно: Песочница Godot