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


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!


Thank you!



[Please log in to post a comment]