私はanim8ライブラリを使用しており、同様の問題に対する彼の回答を参照していますが、キーを押して歩く/移動するときにアニメーションをトリガーする方法をまだ理解していません。
-- main.lua
local anim8 = require('lib.anim8.anim8')
local player, animation, g
function love.load()
player = {}
player.spritesheet = love.graphics.newImage('sprites/hero.png')
player.x = 200
player.y = 200
player.speed = 50
g = anim8.newGrid(16, 24, player.spritesheet:getWidth(),
player.spritesheet:getHeight())
animation = anim8.newAnimation('loop', g('1-8,1-5'), 1.0)
end
function love.update(dt)
animation:update(dt)
if love.keyboard.isDown("w") then
animation = anim8.newAnimation('loop', g('4-6,1'), 0.1)
player.y = player.y - player.speed * dt
elseif love.keyboard.isDown("s") then
player.y = player.y + player.speed * dt
animation = anim8.newAnimation('loop', g('1-3,1'), 0.1)
elseif love.keyboard.isDown("a") and player.x > 0 then
player.x = player.x - player.speed * dt
animation = anim8.newAnimation('loop', g('7-8,1'), 0.1)
elseif love.keyboard.isDown("d") and player.x < 10000 then
player.x = player.x + player.speed * dt
animation = anim8.newAnimation('loop', g('4,2'), 0.1)
end
end
function love.draw()
animation:draw(player.spritesheet, player.x, player.y)
end
現在、スプライトは上下左右に移動しますが、[それぞれ]キーボードキーを押し続けるとアニメーションがフリーズし、キーボードキーを離した後もアニメーションが続行されます。