工欲善其事必先利其器,之前弄好了环境和工具,算是把兵器准备好了
现在开始第一个尝试,自己给自己提需求
需求:
1.制作一个实心的长宽分别为100和75的蓝色矩形
2.要求能用wsad控制矩形的上下左右移动
那么开始:
第一步:在love.draw里画个矩形
function love.draw()
love.graphics.rectangle("fill", 100, 100, 100, 75 )
end
看到的就是一个长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