c++ - 如何防止 Box2D 中传感器对象上的隧道效应

标签 c++ objective-c cocos2d-iphone box2d collision-detection

我正在使用 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/

相关文章:

iphone - 在 iPhone/iPad 通用应用程序中管理图像

objective-c - ios CCLabelTTF 带有核心文本的彩色子类

c++ - 为什么 new 没有用模板实现?

c++ - 如何测试只返回系统值的API?

ios - 为 IOS 加载数据和单例

objective-c - 如何突然停止当前在后台执行的线程?

ios - Cocos 2d,应用程序在我的所有设备上运行,但是当提交到苹果商店时,他们给我发送黑屏外观,只有背景声音

c++ - 变量参数列表如何与 C++ 中的重载对象一起使用?

c++ - 使用 bool 函数忽略输入到数组中的重复元素

iphone - NSSet 中的 NSString 查找