【问题标题】:how to prevent tunneling on sensor objects in Box2D如何防止 Box2D 中传感器对象的隧道效应
【发布时间】:2012-04-12 21:40:54
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • Genpfault,你为什么要删除我的“谢谢”?这在这里被认为不合适吗?我是stackoverflow的新手,很抱歉。
  • 只是一个旁注,詹姆斯。如果您在这里找不到答案,我还建议您将问题发布到 Box2D 论坛。开发人员通常在那里相当活跃。
  • @JamesMorrison 欢迎来到 SO!是的,基本上不需要像“谢谢”、“嗨”或签署您的问题之类的东西。查看this question on Meta SO 了解更多信息。
  • 好的。以后我会尽量记住这一点,这对我来说有点不人道,但如果这就是这里的事情的话。谢谢......我的意思是......没关系:-)

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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2011-05-13
    • 1970-01-01
    • 2010-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多