如何防止 Box2D 中的传感器对象发生隧道

how to prevent tunneling on sensor objects in Box2D

本文关键字:对象 隧道 传感器 何防止 Box2D      更新时间:2023-10-16

我正在使用cocos2d和box2d制作iPad游戏。

在其他元素中,有一个快速移动的玩家对象和一堆静态线对象。 我希望线条能够检测到玩家何时越过它们,但不要像玩家对象或游戏中任何其他移动物体的墙一样。 所以我把线设置为传感器。

但是,Box2D用于快速移动物体碰撞检测的漂亮反隧道代码似乎不适用于设置为传感器的物体。 所以现在我的玩家对象直接穿过行,可能五分之一被检测到。

如何让 box2d 每次都检测越线的精灵,无论它的速度有多快?

编辑:我在box2D论坛上找到了这篇文章,有人遇到了类似的问题,并找到了可能的解决方案。 但是,我没有遵循如何实施解决方案。 也许它会帮助其他人,或者有人可以更清楚地解释这个人做了什么。 他们是这么说的:

好的,

我让它工作了。 有人在Box2D论坛上回应了一个解决方案,即使用光线投射而不是依赖内置的碰撞检测。 我能够在这个关于 RayWenderlich.com 的优秀教程中找到有关如何执行此操作的说明

出于我的目的,我只是从最后一帧开始计算精灵的速度,然后执行光线投射以查看它是否越过任何线条。 回调给出它交叉位置的 x,y 坐标。