Бесконечно проигрывается анимация удара в godot 4(GDScript)
Никак не могу понять, почему код работает некорректно, помогите люди добрые. У меня после нажатия кнопки атаки начинает бесконечно проигрываться анимация атаки. Вроде как я подключил сигнал завершения анимации, и в функции:
func _on_animated_sprite_2d_animation_finished():
if current_animation == "attack":
is_attacking = false
current_animation = ""
и вроде как после этого условия для того чтобы анимация играла на участке кода ниже не выполняются:
if Input.is_action_just_pressed("attack") and current_animation != "attack":
is_attacking = true
current_animation = "attack"
animation_player.play("attack")
но все равно она играется бесконечно. Фул код и скрины ниже, заранее благодарю!
extends CharacterBody2D
@export var speed = 200
var animation_player
var attack_hitbox
var is_attacking = false
var current_animation = ""
func _ready():
animation_player = $AnimatedSprite2D
attack_hitbox = $hitbox_area
func _process(delta):
velocity = Vector2.ZERO
if Input.is_action_pressed("right"):
velocity.x += 1
if Input.is_action_pressed("left"):
velocity.x -= 1
if Input.is_action_pressed("down"):
velocity.y += 1
if Input.is_action_pressed("up"):
velocity.y -= 1
if Input.is_action_just_pressed("attack") and current_animation != "attack":
is_attacking = true
current_animation = "attack"
animation_player.play("attack")
if not is_attacking:
if velocity.length() > 0:
velocity = velocity.normalized() * speed
if velocity.x < 0:
animation_player.flip_h = true
animation_player.play("walk")
else:
animation_player.flip_h = false
animation_player.play("walk")
else:
animation_player.play("idle")
move_and_slide()
func _on_animated_sprite_2d_animation_finished():
if current_animation == "attack":
is_attacking = false
current_animation = ""
func _on_hitbox_area_body_entered(body):
if is_attacking and body.has_method("take_damage"):
body.take_damage(10)
print("you punch 10 dmg")