Вопрос

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?

Это было полезно?

Решение

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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top