【问题标题】:Collision Detection in Cocos2DCocos2D 中的碰撞检测
【发布时间】:2011-01-19 11:55:38
【问题描述】:

我正在设计一个使用 40 个 CCSprite 对象的游戏。我需要检测它们之间的碰撞。我能够检测到 2 个精灵之间的碰撞。现在我如何检查 1 个对象与所有剩余对象?使用 FOR 循环会起作用吗?还是有其他方法可以做到这一点?

【问题讨论】:

    标签: cocos2d-iphone collision-detection


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      你为什么不使用 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) {
      *层 = ( *) 数据;
      [层 collisonDetect:arb];
      返回 cpTrue;
      }

      现在在这里你将处理其余的代码

      -(void)collisonDetect:(cpArbiter*)arb {

      NSLog(@"检测到碰撞");

      }

      【讨论】:

        猜你喜欢
        • 2023-03-27
        • 2014-05-05
        • 1970-01-01
        • 1970-01-01
        • 2011-12-25
        • 1970-01-01
        • 2011-08-14
        • 1970-01-01
        相关资源
        最近更新 更多