1

我用 cocos2d v3 创建了简单的游戏,比如小鸟。接口类:

@interface GameScene : CCScene<CCPhysicsCollisionDelegate>

// -----------------------------------------------------------------------

+ (GameScene *)scene;
- (id)init;

// -----------------------------------------------------------------------
@end

在 .m 文件中:

          _physicsWorld =[CCPhysicsNode node];
          _physicsWorld.gravity=ccp(0, 0);
          _physicsWorld.collisionDelegate=self;
          _physicsWorld.debugDraw =YES;
          [self addChild:_physicsWorld];
          .........
          bird.physicsBody=[CCPhysicsBody bodyWithRect:(CGRect){CGPointZero,bird.contentSize} cornerRadius:0];
          bird.physicsBody.collisionGroup=@"birdGroup";
          bird.physicsBody.collisionType=@"birdCollision";
           [_physicsWorld addChild:bird];
          ........

    tubeBody.physicsBody.collisionGroup =@"tubeGroup";
    tubeBody.physicsBody.collisionType=@"tubeCollision";
    tubeBody.physicsBody.type=CCPhysicsBodyTypeStatic;

    [_physicsWorld addChild:tubeBody];
-(BOOL)ccPhysicsCollisionBegin:(CCPhysicsCollisionPair *)pair typeA:(CCNode *)nodeA typeB:(CCNode *)nodeB{
    [self endGame];
    NSLog(@"end game");
    return YES;
}

为什么方法 ccPhysicsCollisionBegin 从不调用?

4

1 回答 1

2

改变

-(BOOL)ccPhysicsCollisionBegin:(CCPhysicsCollisionPair *)pair typeA:(CCNode *)nodeA typeB:(CCNode *)nodeB{

至:

-(BOOL)ccPhysicsCollisionBegin:(CCPhysicsCollisionPair *)pair tubeCollision:(CCNode *)nodeA birdCollision:(CCNode *)nodeB{

您有碰撞委托的示例代码,因此您必须将其调整为您的代码,其中 nodeA 是管子,nodeB 是鸟。

于 2014-05-09T08:41:28.767 回答