【发布时间】:2017-03-20 00:09:43
【问题描述】:
所以我正在尝试重新制作大约一年前制作的 Flash 游戏,但使用的是 love2D。我已经到了基本完成的地步,所以我决定去修复一些东西。
第一件事是我在旋转的物体上使用了普通的 AABB 碰撞检测,有时子弹会直接穿过僵尸(我使用 roblox 中的 2D 碰撞教程解决了这个问题,看图。)
接下来我想让僵尸在碰撞时“推开”而不是相互融合。
我用于旋转 2D 碰撞的教程还展示了如何在物体碰撞时将它们移开。
每个僵尸都存储在一个表中,然后我循环遍历这些表来处理它们(比如绘制、更新等。僵尸是通过另一个类创建的)
但由于它们在同一张桌子上,我不确定如何确保它们相互碰撞。
for izom,zom in ipairs(main.zombies) do
zom:update(dt)
doesCollide,mtv = collide(zom,zom)
if collide(zom,zom) then
zom.Position = zom.Position + Vector2.new(mtv.x, mtv.y);;
end
end
我试过了,但是没用。
我该如何解决这个问题?
【问题讨论】:
-
good ol' 嵌套有什么问题?
for i=2,#main.zombies do for j=1,i-1 do stuff with zombie[i] and zombie[j] end end
标签: lua collision-detection love2d