function love.load()
--创建两个矩形
r1={
x=10,
y=100,
width=100,
height=100
}
r2={
x=250,
y=120,
width=150,
height=120
}
end
function love.update(dt)
--移动一个矩形
r1.x=r1.x+100*dt
end
function love.draw()
love.graphics.rectangle("line",r1.x,r1.y,r1.width,r1.height)
love.graphics.rectangle("line",r2.x,r2.y,r2.width,r2.height)
end
function checkCCollision(a,b)
--对于局部变量,通常使用下划线而不是驼峰式大小写
local a_left=a.x
local a_right=a.x+a.width
local a_top=a.y
local a_bottom=a.y+a.height
local b_left=b.x
local b_right=b.x+b.width
local b_top=b.y
local b_bottom=b.y+b.height
end
function checkCollision(a, b)
--With locals it's common usage to use underscores instead of camelCasing
local a_left = a.x
local a_right = a.x + a.width
local a_top = a.y
local a_bottom = a.y + a.height
local b_left = b.x
local b_right = b.x + b.width
local b_top = b.y
local b_bottom = b.y + b.height
--If Red's right side is further to the right than Blue's left side.
if a_right > b_left
--and Red's left side is further to the left than Blue's right side.
and a_left < b_right
--and Red's bottom side is further to the bottom than Blue's top side.
and a_bottom > b_top
--and Red's top side is further to the top than Blue's bottom side then..
and a_top < b_bottom then
--There is collision!
return true
else
--If one of these statements is false, return false.
return false
end
function checkCollision(a, b)
--With locals it's common usage to use underscores instead of camelCasing
local a_left = a.x
local a_right = a.x + a.width
local a_top = a.y
local a_bottom = a.y + a.height
local b_left = b.x
local b_right = b.x + b.width
local b_top = b.y
local b_bottom = b.y + b.height
--Directly return this boolean value without using if-statement
return a_right > b_left
and a_left < b_right
and a_bottom > b_top
and a_top < b_bottom
end
function love.load()
--创建两个矩形
r1={
x=10,
y=100,
width=100,
height=100
}
r2={
x=250,
y=120,
width=150,
height=120
}
end
function love.update(dt)
--移动一个矩形
r1.x=r1.x+100*dt
end
function checkCCollision(a,b)
--对于局部变量,通常使用下划线而不是驼峰式大小写
local a_left=a.x
local a_right=a.x+a.width
local a_top=a.y
local a_bottom=a.y+a.height
local b_left=b.x
local b_right=b.x+b.width
local b_top=b.y
local b_bottom=b.y+b.height
if
a_left<b_right and
a_right>b_left and
a_top<b_bottom and
a_bottom>b_top
then
return true
else
return false
end
end
function love.draw()
--我们创建了一个名为mode的局部变量
local mode
if checkCCollision(r1,r2)
then
--如果有冲突,画出填充的矩形为填充模式
mode="fill"
else
--否则,画出填充的矩形为线性模式
mode="line"
end
love.graphics.rectangle(mode,r1.x,r1.y,r1.width,r1.height)
love.graphics.rectangle(mode,r2.x,r2.y,r2.width,r2.height)
end
以上就是今天要讲的内容,本文仅仅简单介绍了Love2d之碰撞检测(Detecting collision),介绍了碰撞检测(Detecting collision)的如何使用,与博主的lua语言文章结合更好的理解love2d的编码,如果你是一名独立游戏开发者,或者一位对游戏开发有着深厚兴趣,但是又对于unity3d,ue4等这些对于新手而言不太友好的引擎而头疼的开发者;那么现在,你可以试试Love2D。Love2D是一款基于Lua编写的轻量级游戏框架,尽管官方称呼其为引擎,但实际上它只能称得上是一个框架,因为他并没有一套全面完整的解决方案。不过,这款框架上手及其容易,是学习游戏开发的初学者入门的一个良好选择。
创作打卡挑战赛
赢取流量/现金/CSDN周边激励大奖
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/qq_44918090/article/details/124616790
内容来源于网络,如有侵权,请联系作者删除!