Love2D 步行动画在没有 spritesheet 的按键上播放
Love2D walking animation play on key press without spritesheet
假设您有三个图像文件:walkleft1.png
、walkleft2.png
和 walkleft3.png
。
如何使用这些图像在按键时播放动画?
有没有办法做到这一点而不必使用精灵sheet?
左行走精灵:
经典的做法是让每个贴图对应一个数字。然后,您可以存储动画的阶段并根据数字显示正确的帧,每隔一定的毫秒数增加它,并在达到最大值时将数字重置为 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()
。
非常简单
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 帧更改一次,代码未测试。如果它不起作用请告诉我
假设您有三个图像文件:walkleft1.png
、walkleft2.png
和 walkleft3.png
。
如何使用这些图像在按键时播放动画?
有没有办法做到这一点而不必使用精灵sheet?
左行走精灵:
经典的做法是让每个贴图对应一个数字。然后,您可以存储动画的阶段并根据数字显示正确的帧,每隔一定的毫秒数增加它,并在达到最大值时将数字重置为 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()
。
非常简单
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 帧更改一次,代码未测试。如果它不起作用请告诉我