2012-02-20 5 views
7

그래서 내가 밟은 키/누르는 키에 따라 생성 한 캐릭터 이미지를 변경하는 방법이 궁금합니다.LOVE 2D에서 워킹 애니메이션을 만드는 법

"d"(또는 wasd 키)를 눌렀을 때 걷는 애니메이션이 생기고 궁극적으로 "d"키를 눌렀을 때 정지 상태가됩니다. 모든 이미지가 생성되었습니다. 이미.

나는이 시도했지만 그것은 작동하지 않았다

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 

답변

20

당신은 얼마나 사랑 작품을 이해해야합니다. 그것은 (매우 기본적으로)이 작업을 수행합니다

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 

이 스키마는 루프 자체가 이름이 너무 자주 - 그것은 The Game Loop를 불렀다.

게임 루프의 일부인 것처럼 love.load()을 사용하고 있기 때문에 코드가 작동하지 않지만 그렇지 않습니다. 태초에, 프로그램의 첫 번째 밀리 세컨드 동안 호출되었고, 결코 다시는 호출되지 않았습니다.

당신은 이미지를로드 할 love.load를 사용하려면, 그리고 love.update 그들을 변경 :

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 

위의 코드는 테이블을 사용하여 고려 될 수있는 특정 반복성을 가지고,하지만 난 일부러 단순하게 떠 났어요 .

love.update 함수에 dt 매개 변수가 포함되어 있습니다. 당신이 애니메이션은 모든 컴퓨터에서 동일하게 작동하는지 확인하기 위해 필요하기 때문에 이것은 중요하다 (love.update라는 각 컴퓨터에 의존하는 속도 및 dt은 당신이 극복 할 수 있습니다) 당신이 경우,

그럼에도 불구하고 애니메이션을 원한다면이 Animation Lib 또는 my own을 사용하는 것이 좋습니다.

+0

대단히 감사합니다. – Switchkick