можно ли как-то определить окончание анимации в gdScript в Godot'e?

Нужно поставить условие, чтобы после окончания анимации, вылетала "пуля". Существует ли какой-то метод, определяющий конец? Или как можно записать программно? Я знаю, что вместо метода is_action_pressed можно использовать is_action_just_pressed, но тогда вовсе анимация не проигрывается Код:

func atack():
  animation.play('atack')
  var bul = bullet.instantiate()
  bul.position = $Marker2D.global_position
  get_parent().add_child(bul)

if Input.is_action_pressed("enter"):
  atack()
  velocity.x = move_toward(velocity.x, 0, speed)

Ответы (1 шт):

Автор решения: te1ny

Да, можно. Для этого в узле анимации зайдите в настройку Node, там найдите сигнал animation_finished, подключите его к узлу, в котором у вас написан код выше и у вас появится функция, которая будет срабатывать после завершения анимации. Дальше можете сделать что душе угодно, например, при атаке ставить булеву-переменную Attacked (создать в скрипте конечно) в значение true, а после в функции animation_finished, поставить эту переменную в значении false. Дальше с помощью оператора if делать проверку при нажатии на клавишу атаки. Если Attacked == false делайте ваш скрипт, иначе pass или можете не добавлять блок else

→ Ссылка