Log In  

Hello everyone! I'm wondering how I could have multiple animations? Like an idle, walking, running, etc. The problem is that when I run (which is the else) It goes through the whole animation sheet, I know why but have no clue how to tackle.

Responses much appreciated!

    -- player anim
    if not pl.wlk then
        if pl.sp <= 4 then
            pl.sp+=0.01
        else
            pl.sp=1
        end
    else
        if pl.sp <= 6.9 then
            pl.sp+=0.1
        else
         pl.sp=5
        end
    end
P#148204 2024-05-10 00:00 ( Edited 2024-05-10 00:01)

anim_walk={1,2,3,4}
anim_run={5,6,7,8}

function getanimframe(anim,fps)
 return anim[1+flr(fps*t()%#anim)]
end

--usage
if (player.isrunning) player.sprite=getanimframe(anim_run,15)

fps is the frames/sec you want the animation to appear to run at. Note that the frame is dependent on the current runtime of the game overall and not when the animation was set. You can add some more to this to implement a time offset to ensure you always start off on the first frame but that's a bit more complicated.

Instead, I like to use this in conjunction with a second anim system that handles "one-shot" anims separately (jumping, attack moves). But I'm on my phone and don't have that code handy or memorized. I may be able to get back to this in the morning and add that.

Good luck!

P#148212 2024-05-10 03:45 ( Edited 2024-05-10 03:53)

Thank you!

P#148249 2024-05-10 22:52

[Please log in to post a comment]