Love2D 按键播放行走动画而无需使用精灵表

假设您有三个图像文件:walkleft1.png,walkleft2.pngwalkleft3.png

如何在按键时使用这些图像来播放动画?

有没有一种方法可以做到这一点而不必使用精灵表?

左行走动画:img1img2img3

点赞
用户9911093
用户9911093

经典实现此功能的方式是让每个纹理对应一个数字。然后根据数字存储动画阶段并显示正确的帧,每隔一定毫秒数增加数字并在达到最大值时将其重置为 0。我相信有很多在线资源可以提供示例。但是,这里是一些伪代码,以给您一些想法:

class animation
    stage = 0
    image_array = []

    constructor(images)
        for image in images
           image_array.add_item(image)

    next()
        stage++
        if stage > image_array.length
            stage = 0
        return image_array[stage]

然后,在游戏循环中每次想要更新时调用 next()

2018-06-08 22:32:48
用户8425022
用户8425022
function love.load()
img = {}
img[1] = love.graphics.newImage("sprite1")
img[2] = love.graphics.newImage("sprite2")
img[3] = love.graphics.newImage("sprite3")
frame = 1
anim_speed = 0
end

function love.update()
--只有在 `anim_speed` 等于 20 时才会更改帧
if anim_speed == 20 then
if frame < 4 then
frame = frame + 1
else
frame = 1
end
--当 `anim_speed` 达到 20 时重置为 0
anim_speed = 0
end
--增加 `anim_speed`,这在每个帧之间产生延迟效果
if anim_speed < 20 then
anim_speed = anim_speed + 1
end
end

function love.draw()
love.graphics.draw(img[frame])
end

使用这个脚本,动画会在每 20 帧更改一次,代码未经过测试... 如果不起作用,请告诉我。

2018-06-14 15:05:51