我正在使用cocos2d和box2d进行ipad游戏。
在其他元素中,有一个快速移动的玩家对象和一堆静态线对象。我想让线条检测玩家何时越过它们,但不要像玩家对象的墙壁或游戏中的任何其他移动物体那样。所以我把这些线设置为传感器。
然而,Box2D用于快速移动物体碰撞检测的漂亮的反隧道代码似乎不适用于设置为传感器的物体。所以现在我的玩家对象直接穿过线条,只有五次被检测到。
我怎样才能获得box2d来检测每次越过线的精灵,无论它有多快?
编辑:我在box2D论坛上发现了这篇帖子,其中有人有类似的问题并找到了a possible solution。但是,我不遵循如何实施解决方案。也许它会帮助别人,或者也许有人可以更清楚地解释这个人做了什么。这就是他们所说的:
答案 0 :(得分:2)
好的,我搞定了。有人在Box2D论坛上回答了一个解决方案,即使用光线投射而不是依靠内置的碰撞检测。我能够找到有关如何执行此操作的说明in this excellent tutorial on RayWenderlich.com
出于我的目的,我只是从最后一帧计算出精灵的速度,然后进行射线投射以查看它是否越过任何线。回调给出了它越过的x,y坐标。