8

それで、私が押した/押しているキーに応じて、作成したキャラクターのイメージを変更する方法を考えていましたか?

「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
4

1 に答える 1

22

LÖVEがどのように機能するかを理解する必要があります。それは(非常に基本的に)これを行います:

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

このスキーマは非常に頻繁であるため、ループ自体に名前が付けられています。これは、ゲームループと呼ばれます。

love.load()ゲームループの一部であるかのように使用しているため、コードは機能しませんが、機能しません。これは、プログラムの最初、最初の1ミリ秒程度の間に呼び出され、二度と呼び出されません。

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

上記のコードには、テーブルを使用して除外できる特定の反復性がありますが、意図的に単純なままにしておきます。

dtまた、関数にパラメーターが含まれていることにも気付くでしょうlove.update。これは、アニメーションがすべてのコンピューターで同じように機能することを確認するために必要になるため、重要です(love.update呼び出される速度は各コンピューターによって異なり、dtそれに対処できます)。

それでも、アニメーションを実行したい場合は、おそらくこのAnimationLibまたは私自身のアニメーションを使用することをお勧めします。

于 2012-02-20T11:23:12.920 に答える