Cocos2D中的碰撞检测

时间:2011-01-19 11:55:39

标签: cocos2d-iphone collision-detection

我正在设计一个游戏,其中我使用了40个CCSprite对象。我需要检测它们之间的碰撞。我能够检测到两个精灵之间的碰撞。现在我如何检查所有剩余对象的1个对象?使用FOR循环会起作用吗?或者还有其他方法吗?

2 个答案:

答案 0 :(得分:1)

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

如果不是,我想您可以将游戏区域划分为矩形并将对象分布到矩形(与多个矩形重叠的对象属于所有矩形)。然后,当您进行碰撞时,您只能检查放置初始对象的矩形。当然,这很大程度上取决于你在那里拥有的东西。如果所有物体都移动很多,那可能不是一个好主意。

答案 1 :(得分:0)

为什么不使用Box2D或花栗鼠

对于Box2D,这link会有所帮助。

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

您需要添加以下行

  

shape-> collision_type = kCollisionTypeParticle;
  cpSpaceAddCollisionHandler(space_,kCollisionTypeParticle,kCollisionTypeParticle,collisonDetect,NULL,NULL,NULL,self);

这里collisonDetect是我们需要注册的方法:

  

cpBool collisonDetect(cpArbiter * arb,struct cpSpace * space,void * data)   {
  * layer =(*)data;
  [layer collisonDetect:arb];
  return cpTrue;
  }

现在,您将在这里处理其余代码

  

- (无效)collisonDetect:(cpArbiter *)ARB   {

     NSLog(@“碰撞检测”);

  }