gpt4 book ai didi

animation - 如何在 LOVE 2D 中创建行走动画

转载 作者:行者123 更新时间:2023-12-02 19:59:39 27 4
gpt4 key购买 nike

所以我想知道如何根据我按下/正在按下的键来更改我创建的角色图像?

我的终极目标是在按下“d”(或任何 wasd 键)时出现行走动画,但当刚刚按下“d”键时他会静止不动,等等。所有图像都已创建.

我已经尝试过,但没有成功:

function love.load()

if love.keyboard.isDown("a") then
hero = love.graphics.newImage("/hero/11.png")
elseif love.keyboard.isDown("d") then
hero = love.graphics.newImage("/hero/5.png")
elseif love.keyboard.isDown("s") then
hero = love.graphics.newImage("/hero/fstand.png")
elseif love.keyboard.isDown("w") then
hero = love.graphics.newImage("/hero/1.png")
end

function love.draw()

love.graphics.draw(background)
love.graphics.draw(hero, x, y)

end

最佳答案

您必须了解 LÖVE 的运作方式。它(基本上)是这样做的:

love.load()       -- invoke love.load just once, at the beginning
while true do -- loop that repeats the following "forever" (until game ends)
love.update(dt) -- call love.update()
love.draw() -- call love.draw()
end

这个模式如此频繁,以至于循环本身有一个名称 - 它被称为 The Game Loop .

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

您想使用 love.load 加载图像,并使用 love.update 更改它们:

function love.load()
heroLeft = love.graphics.newImage("/hero/11.png")
heroRight = love.graphics.newImage("/hero/5.png")
heroDown = love.graphics.newImage("/hero/fstand.png")
heroUp = love.graphics.newImage("/hero/1.png")

hero = heroLeft -- the player starts looking to the left
end

function love.update(dt)
if love.keyboard.isDown("a") then
hero = heroLeft
elseif love.keyboard.isDown("d") then
hero = heroRight
elseif love.keyboard.isDown("s") then
hero = heroDown
elseif love.keyboard.isDown("w") then
hero = heroUp
end
end

function love.draw()
love.graphics.draw(background)
love.graphics.draw(hero, x, y)
end

上面的代码有一定的重复性,可以使用表格来分解,但我故意让它变得简单。

您还会注意到,我在 love.update 函数中包含了 dt 参数。这很重要,因为您需要它来确保动画在所有计算机上都相同(调用 love.update 的速度取决于每台计算机,并且 dt) > 让你能够应对这个问题)

尽管如此,如果你想做动画,你可能会想使用这个 Animation Libmy own .

关于animation - 如何在 LOVE 2D 中创建行走动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9359858/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com