5

我已经在我的引擎中集成了 box2d(Debug Draw 等),并且我可以在一个世界中加入一些 2d 正方形/矩形等。

我看到这篇文章,用户基本上没有使用世界进行碰撞检测,但是用户没有解释他如何使用歧管(b2Manifold)等。

另一个帖子,在cocos2d论坛,(在第三个回复中向下滚动到用户Lam)

任何人都可以帮我解决这个问题吗?基本上是想在不需要使用 b2World 等的情况下添加碰撞检测。

非常感谢!

4

2 回答 2

2

这两个帖子中的代码对我来说似乎都是完整的。你从两个多边形形状和它们对应的变换开始,从 b2CollidePolygons 你得到一个接触流形。

b2Manifold 只是两个形状边界相交的点的集合。在发布的代码中,作者使用如果流形的点数大于零,则存在重叠。根据形状的性质,当它们重叠时,可能会有不同数量的交点。

请注意,b2World 的碰撞处理非常稳健。除了简单的碰撞查询之外,它还具有广泛的相位剔除、光线投射、空间树、开始接触和结束接触事件、高效的内存管理等等。API 中有用于大多数这些任务的类,但我不能说我对手动使用它们很熟悉。可能值得一看。

于 2010-07-01T06:38:35.720 回答
2

你有什么理由不能使用 b2World 吗?仅仅因为您使用它,并不意味着您必须使用物理模拟,除非您的性能受到严重限制。

请参阅这个仅在 Cocos2d 中使用 Box2D 进行碰撞的示例。也许你可以应用类似于你的项目的东西:http ://www.raywenderlich.com/606/how-to-use-box2d-for-just-collision-detection-with-cocos2d-iphone

于 2010-09-08T15:55:19.983 回答