Love2D碰撞检测?

我正在制作一个“飞翔的小鸟”克隆版,我非常喜欢2D游戏,但我只有一个小鸟煽动翅膀的动画和背景。我想让小鸟触碰地面时游戏结束,或显示一个游戏结束的页面。但我似乎找不到一个好的方法来实现这一点,而不使用外部库。是否有解决方案?如果有助于或有影响,我将地面作为单独的图像进行处理。我正在使用最新的LOVE 2D框架版本。

谢谢!我知道有人会给我需要的答案!

点赞
用户5807837
用户5807837

我在我的游戏中使用了矩形。

如果(鸟.x <= 管.x和鸟.y <= 管.y和鸟.x + 鸟.宽度 >= 管.x和鸟.y + 鸟.高度 >= 管.y),那么
   {...代码...}

如果(鸟.x <= 管.x和鸟.y >= 管.y和鸟.x + 鸟.宽度 >= 管.x和鸟.y <= 管.y + 管.高度),那么
   {...代码...}

 如果(鸟.x >= 管.x和鸟.y <= 管.y和鸟.x <= 管.x + 管.宽度和鸟.y + 鸟.高度 >= 管.y),那么
   {...代码...}

如果(鸟.x >= 管.x和鸟.y >= 管.y和鸟.x <= 管.x + 管.宽度和鸟.y <= 管.y + 管.高度),那么
   {...代码...}
2016-01-19 12:04:43
用户8128193
用户8128193

我使用了从Love2D论坛中部分借鉴的简单代码。以下是代码,函数下面是使用它的方式(可以为许多对象重复使用)。

-----------------------代码-------------------------
function colMulti(x1, y1, w1, h1,  x2, y2, w2, h2)
    return  x1 < x2+w2 and
            x2 < x1+w1 and
            y1 < y2+h2 and
            y2 < y1+h1
end

-----------------------使用-------------------------
x1, y1, w1, h1 = bird.x, bird.y, bird.img:getWidth(), bird.img:getHeight()
x2, y2, w2, h2 = ground.x, ground.y, ground.img:getWidth(), ground.img:getHeight()

if colMulti(x1, y1, w1, h1,  x2, y2, w2, h2) then
    ——在这里执行Bird死亡
end

还有一种更长、更复杂、更高效的碰撞检测方法,但你必须学习关于Love2D的内置物理引擎的大量知识。(虽然好像你不需要它。)

有关其他方法的更多信息:https://love2d.org/wiki/love.physics

2017-06-07 22:53:26