Вы должны понимать, как работает 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
Эта схема настолько часта, что у самого цикла есть имя - оно называется Игровой цикл .
Ваш код не работает, потому что вы используете 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
Приведенный выше код имеет определенную повторяемость, которую можно вычленить с помощью таблиц, но я специально упростил ее.
Вы также заметите, что я включил параметр dt
в функцию love.update
. Это важно, так как он вам понадобится, чтобы убедиться, что анимации работают одинаково на всех компьютерах (скорость, с которой вызывается love.update
, зависит от каждого компьютера, а dt
позволяет вам справиться с этим)
Тем не менее, если вы хотите делать анимацию, вы, вероятно, захотите использовать эту анимацию Lib или мой собственный .