2012-02-20 16 views
7

Quindi mi chiedevo come modificare un'immagine del personaggio che ho creato a seconda del tasto che ho premuto/sto premendo?Come creare un'animazione a piedi in LOVE 2D

Il mio ultimo tentativo di avere un'animazione che si verifica quando viene premuto "d" (o uno qualsiasi dei tasti wasd), ma poi si ferma quando il tasto "d" è stato premuto, ecc. Tutte le immagini sono state create già.

Ho provato questo, ma non ha funzionato:

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 

risposta

20

è necessario capire come funziona l'amore. E '(molto in fondo) fa questo:

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 

Questo schema è così frequente che il ciclo si ha un nome - si chiama The Game Loop.

Il tuo codice non funziona perché stai usando love.load() come se fosse parte del ciclo di gioco, ma non lo è. Si chiama all'inizio, durante il primo millisecondo del tuo programma, e mai più.

si desidera utilizzare love.load non caricare le immagini, e love.update di cambiarle:

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 

Il codice ha sopra certa ripetitività che può essere scomposto utilizzando tabelle, ma ho lasciato semplice di proposito .

Si noterà anche che ho incluso il parametro dt nella funzione love.update. Questo è importante, dal momento che è necessario per assicurarsi che le animazioni funzionano allo stesso modo in tutti i computer (la velocità alla quale love.update è chiamata dipende da ogni computer, e dt permette di far fronte a tale)

Tuttavia, se si vuoi fare animazioni, probabilmente vorrai usare questo Animation Lib o my own.

+0

Grazie mille! – Switchkick