1

我对 Lua 和 Love2D 完全陌生,可能根本不理解这些概念。嗯,这是一个 Love2D 教程,我想改变它,例如,当我在键盘上按“a”时,对象将交换(从仓鼠到汽车)等等。

你能帮我吗?

-- Tutorial 1: Hamster Ball
-- Add an image to the game and move it around using
-- the arrow keys.
-- compatible with löve 0.6.0 and up

function love.load()
   hamster = love.graphics.newImage("hamster.png")
   auto = love.graphics.newImage("auto.png")
   x = 50
   y = 50
   speed = 300
end

function love.update(dt)
   if love.keyboard.isDown("right") then
      x = x + (speed * dt)
   end
   if love.keyboard.isDown("left") then
      x = x - (speed * dt)
   end

   if love.keyboard.isDown("down") then
      y = y + (speed * dt)
   end
   if love.keyboard.isDown("up") then
      y = y - (speed * dt)
   end
   if love.keyboard.isDown("escape") then
      love.event.quit()
   end
   if love.keyboard.isDown("a") then
      love.draw(auto,x,y)
   end
end

function love.draw()
   love.graphics.draw(hamster, x, y)
end
4

2 回答 2

0

我建议love.update只使用更新状态。不要画进去。然后在love.draw. 一个解决方案可能是:

local state = {}

function love.load()
    hamster = love.graphics.newImage("hamster.png")
    auto = love.graphics.newImage("auto.png")
    state.activeImage = hamster
    state.activeImageName = "hamster"
    -- <snip> ...
end

function love.update(dt) 
    -- <snip> ... 
    if love.keyboard.isDown("a") then
        if state.activeImageName == "hamster" then
            state.activeImage = auto
            state.activeImageName = "auto"
        else
            state.activeImage = hamster
            state.activeImageName = "hamster"
        end
    end
end

function love.draw()
   love.graphics.draw(state.activeImage, x, y)
end
于 2013-12-10T14:39:35.167 回答
0

好吧,谢谢 Corbin,我在没有“状态”局部变量的情况下弄清楚了。你的解决方案对我很有启发。现在它正在工作。

  -- Tutorial 1: Hamster Ball
    -- Add an image to the game and move it around using
    -- the arrow keys.
    -- compatible with löve 0.6.0 and up


    function love.load()
       hamster = love.graphics.newImage("hamster.png")
       auto = love.graphics.newImage("auto.png")
       activeImage = hamster
       activeImageName = "hamster"
       x = 50
       y = 50
       speed = 300
    end

    function love.update(dt)
       if love.keyboard.isDown("right") then
          x = x + (speed * dt)
       end
       if love.keyboard.isDown("left") then
          x = x - (speed * dt)
       end

       if love.keyboard.isDown("down") then
          y = y + (speed * dt)
       end
       if love.keyboard.isDown("up") then
          y = y - (speed * dt)
       end
       if love.keyboard.isDown("escape") then
          love.event.quit()
       end
       if love.keyboard.isDown("a") then
          activeImage = auto
          activeImageName = "auto"
       end
       if love.keyboard.isDown("h") then
          activeImage = hamster
          activeImageName = "hamster"
       end

    end

    function love.draw()
       love.graphics.draw(activeImage, x, y)
    end
于 2013-12-10T15:18:17.480 回答