天天看點

love2d之路(二)第一個嘗試-控制移動

工欲善其事必先利其器,之前弄好了環境和工具,算是把兵器準備好了

現在開始第一個嘗試,自己給自己提需求

需求:

1.制作一個實心的長寬分别為100和75的藍色矩形

2.要求能用wsad控制矩形的上下左右移動

那麼開始:

第一步:在love.draw裡畫個矩形

function love.draw()

    love.graphics.rectangle("fill", 100, 100, 100, 75 )

end
           
love2d之路(二)第一個嘗試-控制移動

看到的就是一個長100,寬75的白色矩形了

love.graphics.rectangle("fill", 100, 100, 100, 75 )中的參數

"fill":實心

100:x

100:y

100:長

75  :寬

第二步:跟需求的顔色不一樣,要的是藍色,現在是白色,怎麼做呢?

function love.draw()

    love.graphics.rectangle("fill", 100, 100, 100, 75 )

    love.graphics.setColor(0,0,255,255)

end

setColor方法,四個參數分别是rgba(取值0-255),至于rgba是啥,不知道的百度去

love2d之路(二)第一個嘗試-控制移動

那麼顔色就換成功了

第三步:上下左右移動

看到移動首先想到的是鍵盤偵聽吧

love2d的鍵盤偵聽:

--鍵盤按下釋放時的回調

function love.keyreleased(key)

end

--鍵盤按下狀态函數

love.keyboard.isDown() 

前者按下鍵盤一次觸發一次

後者可以放在update裡每幀執行

這裡我們當然用的後者

那麼開始代碼:

function love.load()

  rect = {

    x = 100,

    y = 100

  }

end

function love.draw()

  --因為要讓矩形位置改變,這裡把x和y存進一個對象裡

  love.graphics.rectangle("fill", rect.x, rect.y, 100, 75)

  love.graphics.setColor(0, 0, 255, 255)

end

function love.update(dt)

  if love.keyboard.isDown('w') then

    rect.y = rect.y - 1

  elseif love.keyboard.isDown('s') then

    rect.y = rect.y + 1

  elseif love.keyboard.isDown('a') then

    rect.x = rect.x - 1

  elseif love.keyboard.isDown('d') then

    rect.x = rect.x + 1

  end

end
           

這裡就成功實作了wsad上下左右移動了

第四步:優化

但是呢,有一點問題,那就是同時隻能往一個方向移動,兩個鍵同時按不會同時起效果

怎麼改呢?

function love.update(dt)

  if love.keyboard.isDown('w') then

    rect.y = rect.y - 1

end

if love.keyboard.isDown('s') then

    rect.y = rect.y + 1

end

if love.keyboard.isDown('a') then

    rect.x = rect.x - 1

end

if love.keyboard.isDown('d') then

    rect.x = rect.x + 1

  end

end
           

改成每幀判斷四次就行了

最後給下完全的代碼:

function love.load()

  rect = {

    x = 100,

    y = 100

  }

end

function love.draw()

  love.graphics.rectangle("fill", rect.x, rect.y, 100, 75)

  love.graphics.setColor(0, 0, 255, 255)

end

function love.update(dt)

  if love.keyboard.isDown('w') then

    rect.y = rect.y - 1

end

if love.keyboard.isDown('s') then

    rect.y = rect.y + 1

end

if love.keyboard.isDown('a') then

    rect.x = rect.x - 1

end

if love.keyboard.isDown('d') then

    rect.x = rect.x + 1

  end

end
           

繼續閱讀