Я использую данное движение 2D-платформера Godot и внес свои собственные входные данные. Один из них — слайд. При вводе слайда воспроизводится анимация скольжения и увеличивается скорость. В конце анимации персонаж встает. Как заставить персонажа остановить анимацию и вернуть нормальную скорость после ее завершения.
and not(Input.is_action_pressed("slide")):
velocity.y = JUMP_VELOCITY
var direction = Input.get_axis("left", "right")
if direction > 0:
animated_sprite.flip_h = false
elif direction < 0:
animated_sprite.flip_h = true
if direction == 0:
animated_sprite.play('default')
else:
if Input.is_action_pressed("slide"):
animated_sprite.play("slide")
animation_player.play("slide")
SPEED = 150.0
else:
animated_sprite.play("run")
animation_player.play("RESET")
SPEED = 120.0
if direction:
velocity.x = direction * SPEED
else:
velocity.x = move_toward(velocity.x, 0, SPEED)
move_and_slide()
Не стесняйтесь задавать вопросы для получения дополнительной информации.
Вы можете вызывать функции непосредственно из ключевых кадров анимации, используя дорожку анимации «Вызов метода». В новом видеоуроке от Brackeys это показано здесь: https://youtube.com/watch?v=LOhfqjmasi0&t=4398
Вы также можете использовать ключевое слово await
, чтобы дождаться сигнала animation_finished
:
if Input.is_action_just_pressed("slide"):
animation_player.play("slide")
SPEED = 150.0
await animation_player.animation_finished
SPEED = 120.0