Cocos2d iphone Cocos2D中的碰撞检测

Cocos2d iphone Cocos2D中的碰撞检测,cocos2d-iphone,collision-detection,Cocos2d Iphone,Collision Detection,我正在设计一个游戏,其中我使用了40个CCSprite对象。我需要检测它们之间的碰撞。我能够检测到两个精灵之间的碰撞。现在,如何将1个对象与所有剩余对象进行比较?使用FOR循环是否有效?或者还有其他方法可以做到这一点吗?我认为对于第一次迭代,您应该实现for循环,看看它是否足够快 如果不是,我想你可以把游戏区域划分成矩形,然后把你的对象分配到矩形中(一个与多个矩形重叠的对象属于所有矩形)。然后,在执行碰撞时,只能在放置初始对象的矩形中进行检查。当然,这在很大程度上取决于你有什么。如果所有的物体都

我正在设计一个游戏,其中我使用了40个CCSprite对象。我需要检测它们之间的碰撞。我能够检测到两个精灵之间的碰撞。现在,如何将1个对象与所有剩余对象进行比较?使用FOR循环是否有效?或者还有其他方法可以做到这一点吗?

我认为对于第一次迭代,您应该实现for循环,看看它是否足够快


如果不是,我想你可以把游戏区域划分成矩形,然后把你的对象分配到矩形中(一个与多个矩形重叠的对象属于所有矩形)。然后,在执行碰撞时,只能在放置初始对象的矩形中进行检查。当然,这在很大程度上取决于你有什么。如果所有的物体都四处移动,这可能不是个好主意。

为什么不使用Box2D或花栗鼠呢

对于Box2D,这将有所帮助

对于Cocos2D,以下代码将有所帮助

您需要添加以下行

形状->碰撞类型=kCollisionTypeParticle
cpSpaceAddCollisionHandler(空格、kCollisionTypeParticle、kCollisionTypeParticle、collisonDetect、NULL、NULL、self)

这里,collisonDetect是一种我们需要注册为的方法:

cpBool collisonDetect(cpArbiter*arb,struct cpSpace*space,void*data) {
*图层=(*)数据;
[层碰撞检测:arb];
返回cpTrue;
}

现在,您将处理其余的代码

-(无效)碰撞检测:(cpArbiter*)arb {

NSLog(@“检测到冲突”);

}