工欲善其事必先利其器,之前弄好了環境和工具,算是把兵器準備好了
現在開始第一個嘗試,自己給自己提需求
需求:
1.制作一個實心的長寬分别為100和75的藍色矩形
2.要求能用wsad控制矩形的上下左右移動
那麼開始:
第一步:在love.draw裡畫個矩形
function love.draw()
love.graphics.rectangle("fill", 100, 100, 100, 75 )
end
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNvwVZ2x2bzNXak9CX90TQNNkRrFlQKBTSvwFbslmZvwFMwQzLcVmepNHdu9mZvwFVywUNMZTY18CX052bm9CX6dGVORza65kMFpHW4Z0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2LcRHelR3LcJzLctmch1mclRXY39TM1kDO1czMwEjMwkDM4EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
看到的就是一個長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的鍵盤偵聽:
--鍵盤按下釋放時的回調
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