2012-02-20 20 views
7

Vì vậy, tôi đã tự hỏi làm thế nào để thay đổi một hình ảnh của nhân vật tôi đã tạo ra tùy thuộc vào phím tôi đã ép/ép?Làm thế nào để tạo ra một hoạt hình đi bộ trong LOVE 2D

Cuối cùng tôi sẽ có một hoạt hình đi bộ xảy ra khi "d" (hoặc bất kỳ phím wasd) được nhấn nhưng sau đó ông đứng yên khi phím "d" vừa được nhấn vv Tất cả hình ảnh đã được tạo rồi.

Tôi đã thử điều này, nhưng nó đã không làm việc ra:

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 

Trả lời

20

Bạn phải hiểu tác phẩm như thế nào tình yêu. Nó (về cơ bản) thực hiện điều này:

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 

Giản đồ này thường xuyên có vòng lặp - tên là The Game Loop.

Mã của bạn không hoạt động vì bạn đang sử dụng love.load() như thể nó là một phần của vòng lặp trò chơi, nhưng không phải vậy. Nó được gọi ngay từ đầu, trong suốt mili giây đầu tiên của chương trình, và không bao giờ nữa.

Bạn muốn sử dụng love.load làm tải những hình ảnh, và love.update để thay đổi chúng:

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 

Đoạn mã trên có một số repetitiveness có thể là yếu tố bằng cách sử dụng bảng, nhưng tôi đã để lại cho nó đơn giản về mục đích .

Bạn cũng sẽ nhận thấy rằng tôi đã bao gồm thông số dt trong hàm love.update. Điều này quan trọng, vì bạn sẽ cần nó để đảm bảo hoạt ảnh giống nhau trong tất cả các máy tính (tốc độ mà tại đó love.update được gọi phụ thuộc vào từng máy tính và dt cho phép bạn đối phó với điều đó)

Tuy nhiên, nếu bạn muốn tạo hoạt ảnh, có thể bạn sẽ muốn sử dụng số này Animation Lib hoặc my own.

+0

Cảm ơn bạn rất nhiều! – Switchkick

Các vấn đề liên quan