我正在使用 cocos2d 和 box2d 制作 iPad 游戏。
在其他元素中,有一个快速移动的玩家对象和一堆静态线对象。我希望这些线能够检测到玩家何时穿过它们,但不要像玩家对象或游戏中任何其他移动对象的墙一样。所以我将线路设置为传感器。
但是,Box2D 用于快速移动物体碰撞检测的漂亮反隧道代码似乎不适用于设置为传感器的物体。所以现在我的玩家对象直接穿过了线,并且大约只有五分之一的时间被检测到。
如何让 box2d 每次都能检测到越线的 Sprite ,无论它的速度有多快?
编辑:我在 box2D 论坛上找到了这篇文章,其中有人遇到了类似的问题,并发现 a possible solution 。但是我不知道如何实现该解决方案。也许它会帮助其他人,或者也许有人可以更清楚地解释这个人做了什么。他们是这么说的:
最佳答案
好的,我成功了。有人在 Box2D 论坛中回复了一个解决方案,即使用光线转换而不是依赖内置的碰撞检测。我能够找到有关如何执行此操作的说明 in this excellent tutorial on RayWenderlich.com
出于我的目的,我只是从最后一帧计算 Sprite 的速度,然后执行光线转换以查看它是否穿过任何线。回调给出了它穿过的位置的 x,y 坐标。
关于c++ - 如何防止 Box2D 中传感器对象上的隧道效应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10132282/