如何在LOVE 2D中创建步行动画

前端之家收集整理的这篇文章主要介绍了如何在LOVE 2D中创建步行动画前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
所以我想知道如何根据我按下/按下的键改变我创建的角色图像?

当按下“d”(或任何一个按键)时,我最终会有一个行走动画,但是当刚刚按下“d”键等时它就会静止.所有图像都已经创建.

我试过这个,但它没有成功:

  1. function love.load()
  2.  
  3. if love.keyboard.isDown("a") then
  4. hero = love.graphics.newImage("/hero/11.png")
  5. elseif love.keyboard.isDown("d") then
  6. hero = love.graphics.newImage("/hero/5.png")
  7. elseif love.keyboard.isDown("s") then
  8. hero = love.graphics.newImage("/hero/fstand.png")
  9. elseif love.keyboard.isDown("w") then
  10. hero = love.graphics.newImage("/hero/1.png")
  11. end
  12.  
  13. function love.draw()
  14.  
  15. love.graphics.draw(background)
  16. love.graphics.draw(hero,x,y)
  17.  
  18. end

解决方法

你必须了解LÖVE的工作原理.它(非常基本上)这样做:
  1. love.load() -- invoke love.load just once,at the beginning
  2. while true do -- loop that repeats the following "forever" (until game ends)
  3. love.update(dt) -- call love.update()
  4. love.draw() -- call love.draw()
  5. end

这种模式非常频繁,循环本身有一个名称 – 它叫做The Game Loop.

你的代码不起作用,因为你正在使用love.load(),好像它是游戏循环的一部分,但事实并非如此.它在开始时,在程序的第一个毫秒左右被调用,而且从不再被调用.

你想用love.load做加载图片,并用love.update来改变它们:

  1. function love.load()
  2. heroLeft = love.graphics.newImage("/hero/11.png")
  3. heroRight = love.graphics.newImage("/hero/5.png")
  4. heroDown = love.graphics.newImage("/hero/fstand.png")
  5. heroUp = love.graphics.newImage("/hero/1.png")
  6.  
  7. hero = heroLeft -- the player starts looking to the left
  8. end
  9.  
  10. function love.update(dt)
  11. if love.keyboard.isDown("a") then
  12. hero = heroLeft
  13. elseif love.keyboard.isDown("d") then
  14. hero = heroRight
  15. elseif love.keyboard.isDown("s") then
  16. hero = heroDown
  17. elseif love.keyboard.isDown("w") then
  18. hero = heroUp
  19. end
  20. end
  21.  
  22. function love.draw()
  23. love.graphics.draw(background)
  24. love.graphics.draw(hero,y)
  25. end

上面的代码具有一定的重复性,可以使用表格进行排除,但我故意将其简单化.

您还会注意到我在love.update函数中包含了dt参数.这一点非常重要,因为您需要它来确保动画在所有计算机中的工作方式相同(调用love.update的速度取决于每台计算机,而dt允许您应对这种情况)

不过,如果你想做动画,你可能想要使用这个Animation Libmy own.

猜你在找的Lua相关文章