why collision not working , cocos2d v3?

China☆狼群 提交于 2019-12-20 04:41:12

问题


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?


回答1:


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.



来源:https://stackoverflow.com/questions/23555715/why-collision-not-working-cocos2d-v3

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!