Cocos2D碰撞检测CCSprites在不同的CCNode上具有不同的位置和旋转

时间:2011-11-07 08:59:45

标签: iphone objective-c cocos2d-iphone

我有这样的层次结构:

场景
- gameWorld(CCLayer Z:0)
- 玩家(CCSprite Z:1)
- spriteWorld(CCNode Z:0)
- bgSprite(CCSprite Z:0)
- 敌人(CCSprite Z:0)

spriteWorld被旋转并且bgSprite被移动,因此与gameWorld坐标系相比,放置在bgSprite上的任何CCSprit都有一个旋转和移动的坐标系。

我需要检测放置在gameWorld和bgSprite上的CCSprit之间的冲突。现在我在这里看到了这篇文章:

Cocos2D CCNode position in absolute screen coordinates

它可以给我相对于屏幕的每个精灵位置,但是我如何计算或得到这些精灵的边界框?那些边界框通过spriteWorld旋转旋转,但每个精灵也在bgSprite上旋转。

对我来说听起来像很疯狂的数学,我对数学很傻,所以我真的需要帮助。

谢谢 Særen

1 个答案:

答案 0 :(得分:1)

事实上,cocos2D没有直接支持碰撞检测,因此您需要自己完成所有计算。

无论如何,您可以使用chipmunk-physicsBox2D等框架为您执行此操作。基本的想法是你将一个体/形状与你的精灵相关联,然后设置一个碰撞回调,当发现碰撞时会触发它,而不用担心数学...

查看有关using Box2D just for collision detection的文章。