1

i create simple game like flapy bird with cocos2d v3 . Interface class:

@interface GameScene : CCScene<CCPhysicsCollisionDelegate>

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

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

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

In .m file:

          _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;
}

why method ccPhysicsCollisionBegin never call?

CodeSmile
  • 64,284
  • 20
  • 132
  • 217
user3530550
  • 25
  • 1
  • 6

1 Answers1

2

Change

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

To:

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

You have the example code of the collision delegate, so you have to adapt it to your code with your nodeA that is the tube and nodeB the bird.

mursang
  • 586
  • 5
  • 24