Multiple sprite 2d and using .visible to animate

Godot Version

4.7

Question

guyes i am having a problem with animtion i use sprite 2d to load the sprte sheet animation in there and use an animation player so i can animate this sprite sheet but i dont know if its the right thing to do i use more than one sprite 2d as shown in the video

And to dont make these sprite 2d mix up with each other i use .visible like this

if yafa_slash == false:

	if direction == 0:

		$AnimationPlayer.play("idle")

		$run.visible = false

		$idle.visible = true

		$jump.visible = false

		$"yafa sword slash 1".visible = false

		$"yafa sword slash 11".visible = false

	if i_have_the_demon_sword == true:

		if $idle.flip_h == true:

			$"sword hold idle right".visible = false

			$"sword hold idle left".visible = true

		if $idle.flip_h == false:

			$"sword hold idle right".visible = true

			$"sword hold idle left".visible = false

	if i_have_the_demon_sword == false:

		$"sword hold idle right".visible = false

		$"sword hold idle left".visible = false

	if direction != 0:

		$AnimationPlayer.play("run1")

		$idle.visible = false

		$run.visible = true

		$jump.visible = false

		$"yafa sword slash 1".visible = false

		$"yafa sword slash 11".visible = false

	if i_have_the_demon_sword == true:

		if $idle.flip_h == true:

			$"sword hold idle right".visible = false

			$"sword hold idle left".visible = true

		if $idle.flip_h == false:

			$"sword hold idle right".visible = true

			$"sword hold idle left".visible = false

	if i_have_the_demon_sword == false:

		$"sword hold idle right".visible = false

		$"sword hold idle left".visible = false

		

	if not is_on_floor():

		$AnimationPlayer.play("jump")

		$jump.visible = true

		$run.visible = false

		$idle.visible = false

		$"yafa sword slash 1".visible = false

		$"yafa sword slash 11".visible = false

	if i_have_the_demon_sword == true:

		if $idle.flip_h == true:

			$"sword hold idle right".visible = false

			$"sword hold idle left".visible = true

		if $idle.flip_h == false:

			$"sword hold idle right".visible = true

			$"sword hold idle left".visible = false

	if i_have_the_demon_sword == false:

		$"sword hold idle right".visible = false

		$"sword hold idle left".visible = false

As you see i use .visible it makes it kind of harder to debug so guyes if this is the wrong one help me to do the right way to animate. Thank you

Even if you are using just 1 frame to animate your sprite, this would be done easier with an AnimatedSprite2D. Make an animation for each sprite, and replace all your “.visible” checks with "animated_sprite.play(“jump”) or whatever animation you are trying to play. Much much easier than toggling a bunch of sprites on and off.