2012-02-20 15 views
7

Zastanawiam się, jak zmienić obraz postaci, którą stworzyłem w zależności od klawisza, który przyciskałem?Jak utworzyć animację spaceru w MIŁOŚCI 2D

Moja najlepsza animacja chodzenia po naciśnięciu klawisza "d" (lub dowolnego z klawiszy), ale potem stoi nieruchomo po naciśnięciu klawisza "d" itp. Wszystkie obrazy zostały utworzone już.

Próbowałem tego, ale to nie wyszło:

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 

Odpowiedz

20

Musisz zrozumieć, jak działa miłości. To (bardzo zasadniczo) to robi:

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 

Ten schemat jest tak częste, że sama pętla ma imię - nazywa The Game Loop.

Twój kod nie działa, ponieważ używasz love.load(), tak jakby był częścią pętli gry, ale tak nie jest. Jest wywoływany na początku, w ciągu pierwszej milisekundy twojego programu i nigdy więcej.

Chcesz użyć love.load są ładowane obrazy i love.update je zmienić:

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 

Powyższy kod ma pewną powtarzalność, które mogą być uwzględnione przy użyciu tabel, ale zostawiłem go prosta celowo .

Można również zauważyć, że dodałem parametr dt do funkcji love.update. Jest to ważne, ponieważ będzie to potrzebne, aby upewnić się, że animacje działają tak samo na wszystkich komputerach (szybkość, z jaką love.update nazywa zależy na każdym komputerze, a dt pozwala poradzić sobie z tym)

Niemniej jednak, jeśli chcesz robić animacje, prawdopodobnie będziesz chciał użyć tego Animation Lib lub my own.

+0

Dziękuję bardzo! – Switchkick

Powiązane problemy