The Godot Q&A is currently undergoing maintenance!

Your ability to ask and answer questions is temporarily disabled. You can browse existing threads in read-only mode.

We are working on bringing this community platform back to its full functionality, stay tuned for updates.

godotengine.org | Twitter

0 votes

In my project I have a character (rigidbody2d) who moves right with the function moveRight()
I want to play a walking animation while the action key is held (echo). When the key is tapped no animation is played but the character moves right.

Currently on echo the animation only plays the first frame until the key is released.On release the animation plays but at that point the sprite is no longer moving
What's my issue here? I'd like the animation to play on a loop as long as the key is held.
Pertinent code below:

func moveRight():
    set_linear_velocity(Vector2(40, get_linear_velocity().y))
    pass

func _input(event):

    if event.is_action("ui_right"):
        if not event.is_echo():
            moveRight()
        else:
            anim.play("walkRight")
            moveRight()
in Engine by (12 points)

1 Answer

0 votes

The problem is that walkRight is being executed from the beginning all the time. Change the anim.play to this:

if not anim.is_playing():
    anim.play("walkRight")

And it should work as expected.

by (52 points)
Welcome to Godot Engine Q&A, where you can ask questions and receive answers from other members of the community.

Please make sure to read Frequently asked questions and How to use this Q&A? before posting your first questions.
Social login is currently unavailable. If you've previously logged in with a Facebook or GitHub account, use the I forgot my password link in the login box to set a password for your account. If you still can't access your account, send an email to [email protected] with your username.