Lua 编程和游戏开发

Lua 编程和游戏开发

👾

需要用到 LOVE 这个软件,它类似于游戏引擎、语言解释器

而且不用安装 Lua (读作/ 撸啊 /) 环境了

🚪官网👉https://www.love2d.org/


绘制内容应该放置于 一个叫做 love.draw() 的函数内 才会执行

加载资源应该放置于 一个叫做 love.load() 的函数内才会执行

5pab056ln4gif


打印字体 & 设置字体

Snipaste20221205105952png

分支

1
2
3
4
5
6
7
8
9
10
11
12
message = 0

function love.draw()
------------------------
if message > 10 then
message = 1
elseif message < 10 then
message = -1
end
-------------------------
love.graphics.print(message)
end

循环 while & for

1
2
3
4
5
6
7
8
9
10
message = 0

function love.draw()
love.graphics.setFont(love.graphics.newFont(50))
while message < 10 do
message = message + 1
-- 不支持 +=
end
love.graphics.print(message)
end

1
2
3
4
5
6
7
8
9
10
message = 0
for i = 1, 7, 2 do
message = message + 1
function love.draw()
love.graphics.print(message)
love.graphics.setFont(love.graphics.setNewFont(50))
end
end

--i👉 1,3,5,7 循环了四次

那三个参数的意思是
初始值终点值每次增加的值

自定义函数

它运行的顺序 不如c#人性化

1
2
3
4
5
6
7
8
9
10
11
function run(i)
message = i
end
--
message = 0
--
run(99)

function love.draw()
love.graphics.print(message)
end

遍历表

Snipaste_2022-12-06_08-47-42.png

其中 i 为键,s 为值,ipairs() 去遍历某个表

绘制、鼠标事件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
function love.load()
target ={}
target.x = 300
target.y = 300
target.radius = 50


score = 0
timer = 0
gameFont = love.graphics.newFont(40)
end

function love.update(dt)

end

function love.draw()

love.graphics.setColor(1,0,0)
love.graphics.circle("fill",target.x,target.y,target.radius)
love.graphics.setColor(1,1,1)
love.graphics.setFont(gameFont)
love.graphics.print(score,0,0)


--fill 矩形
--line 边框
--从0,0 到 200,100

end
--1左键、2右键、3滑轮
function love.mousepressed(x, y , button, isTouch)
if button == 1 then
score = score + 1
end
end

判断是否在圆内

用二维的距离公式

1
2
3
function distanceBetween(x1, y1, x2, y2)
return math.sqrt((x2 - x1) ^ 2 + (y2 - y1) ^ 2)
end

修复 数字闪动 bug

bandicam-2022-12-06-14-46-19-186_1.gif

有点内存溢出的感觉,一般都是拆成两个部分

载入图片 & 显示到窗口 & 图片追随鼠标

1
sprites.crosshairs =love.graphics.newImage("/Assets/crosshairs.png")

1
2
--其中love.mouse是获取鼠标的一些属性
love.graphics.draw(sprites.crosshairs,love.mouse.getX(),love.mouse.getY())

请留意:图层顺应取决于生成顺序

作者

发布于

2022-12-06

更新于

2022-12-19

许可协议