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
¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top