1

我正在使用带有 Box2D 的 cocos2d 制作 iOS 游戏,我想知道如何最好地处理与硬币等可收集对象的碰撞。玩家是一个动态物体,但硬币和其他收藏品(通常)是静态物体。在玩家和这些对象之间创建接触侦听器会更好,还是只遍历游戏循环中的每个硬币(排除屏幕外的任何硬币等)并对它们执行循环碰撞检测?

后一种解决方案对我来说似乎是合理的,但我对 box2D 缺乏经验,并且不确定使用联系监听器时的优点/缺点和性能成本是什么,所以我不确定这是否会更好。

4

2 回答 2

1

我会让接触侦听器完成它的工作,而不是尝试与 Box2D 已经在做的事情并行实施碰撞检测。

您可以使用 bodyDef.userData 存储对 CCPhysicsSprite 对象(或父对象)的周引用,以便您可以在联系侦听器中访问它。从 Box2D 文档中:

用户数据是一个空指针。这为您提供了将应用程序对象链接到主体的挂钩。您应该一致地为所有正文用户数据使用相同的对象类型。

于 2013-02-15T11:49:17.243 回答
0

您可能想查看传感器,因为您不希望硬币阻止您前进。

于 2013-02-02T15:47:58.070 回答