Topic was automatically imported from the old Question2Answer platform.
Asked By
Yamz
Hello this code executes an animation when it is detected that the player has touched a floor
if get_slide_count() != 0:
var body = get_slide_collision(get_slide_count()-1)
if body.normal == Vector2(0,-1) and body.collider.is_in_group("puas"):
get_node("../Puas/anim").play("Down")
The problem is that since the player is constantly touching the floor, the animation runs many times.
How would I make him
if body.normal == Vector2(0,-1) and body.collider.is_in_group("puas") and get_node("../Puas/anim".is_playing():
get_node("../Puas/anim").play("Down")
The extra is_playing() check will make it so that the animationplayer will only restart if it is not currently playing.
Hope this helps
PS: I fixed the formatting in the answer. For the record, you need to separate the code sample from the rest of the text with one blank line above and below, and indent all lines with 4 spaces. (Other intendation should add 4 spaces on top of that, for every indentation level.)
Calinou | 2020-05-11 08:50
Oh thanks for the heads up, I’m pretty new on these forums so that is good to know!
RedBlueCarrots | 2020-05-11 10:08
Also note that your answer is fixing a non-existent problem: “If the animation was already playing, it will keep playing.” (Source)