Pergunta

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?

Foi útil?

Solução

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top