Cómo crear un pie de animación en 2D AMOR
Pregunta
Así que me preguntaba cómo cambiar una imagen de personaje que he creado en función de la clave que me ha presionado/am presionar?
Mi último va a tener poca animación que ocurren cuando "d" (o cualquiera de las teclas wasd) es presionado, pero luego se detiene cuando la tecla "d" ha sido presionado, etc.Todas las imágenes que ya han sido creados.
He intentado esto pero no funciona:
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
Solución
Usted debe entender cómo LÖVE obras.(Muy básicamente) hace esto:
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
Este esquema es tan frecuente que el bucle en sí tiene un nombre: se llama El Bucle De Juego.
El código no funciona porque se está utilizando love.load()
como si fuera parte de el bucle de juego, pero no lo es.Se llama al principio, durante el primer milisegundo o menos de su programa, y nunca más.
Usted desea utilizar love.load
carga las imágenes, y love.update
a cambio de ellos:
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
El código anterior tiene cierta repetitividad que puede ser factorizado a cabo utilizando tablas, pero lo he dejado simple a propósito.
También se dará cuenta de que he incluido el dt
parámetro en la love.update
la función.Esto es importante, ya que la necesitará para asegurarse de que las animaciones funcionan de la misma en todos los ordenadores (la velocidad a la que love.update
se llama depende de cada equipo, y dt
le permite lidiar con eso)
Sin embargo, si quieres hacer animaciones, es probable que desee utilizar este Animación Lib o mi propia.