只在我的2d引擎中集成Box2D碰撞检测?

时间:2010-05-05 23:03:01

标签: c++ iphone cocos2d-iphone box2d box2d-iphone

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

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

Another post,在cocos2d论坛中,(在第三个回复中向下滚动到用户Lam)

有人可以帮我一点吗?,基本上想要添加碰撞检测而不需要使用b2World等等。

非常感谢!

2 个答案:

答案 0 :(得分:2)

这两个帖子中的代码对我来说似乎很完整。首先是两个多边形形状及其相应的变换,然后从b2CollidePolygons返回一个接触流形。

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

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

答案 1 :(得分:2)

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

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