假设您有三个图像文件:walkleft1.png
、walkleft2.png
和walkleft3.png
。
如何在按键的同时使用这些图像播放动画?
有没有一种方法可以在不使用sprite表的情况下做到这一点?
左行精灵:
发布于 2018-06-09 06:32:48
最经典的方法是让每个纹理对应一个数字。然后,您可以存储动画的阶段并根据数字显示正确的帧,每隔一定的毫秒数增加一次,并在数字达到最大值时将其重置为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-14 23:05:52
这很简单
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()
--only change the frame if anim_speed is equals to 20
if anim_speed == 20 then
if frame < 4 then
frame = frame + 1
else
frame = 1
end
--reset the anim_speed to 0 once it hits 20
anim_speed = 0
end
--increment the anim_speed, this gives delay effect between each frame
if anim_speed < 20 then
anim_speed = anim_speed + 1
end
end
function love.draw()
love.graphics.draw(img[frame])
end
使用此脚本,动画将每隔20帧更改一次,代码未经测试。如果它不工作,请让我知道
https://stackoverflow.com/questions/50768854
复制相似问题