cocos2d v3 collision detection

2019-02-28 06:51发布

问题:

I'm trying to inspect collision collision of two bodies, but collision detection callbacks are not being fired. Here is my code:

1) My CCScene implements CCPhysicsCollisionDelegate protocol

2) I set collision delegate for physics

_physics = [CCPhysicsNode node];
_physics.gravity = PHYSICS_GRAVITY;
_physics.debugDraw = YES;
_physics.collisionDelegate = self;
[self addChild:_physics];

3) For each of two body I set a collision type

body1.collisionType       = @"body1";
body2.collisionType       = @"body2";

4) That's it, when these two bodies collide none of CCPhysicsCollisionDelegate callback methods is being called.

- (BOOL)ccPhysicsCollisionBegin:(CCPhysicsCollisionPair *)pair typeA:(CCNode *)nodeA     typeB:(CCNode *)nodeB
{
    NSLog(@"HELLO");
    return YES;
}

Could you please help me with this? Have you been able to receive collision callbacks in cocos2d v3?

Thanks in advance

回答1:

In cocos2d v3 physics, collisionType eliminates the need to set integer bit masks to define the type of collision. The parameter name CCPhysicsCollisionDelegate methods must be the collisionTypes that you want to deal with yourself. So in your case , the collision callback method should be

- (BOOL)ccPhysicsCollisionBegin:(CCPhysicsCollisionPair *)pair body1:(CCNode *)nodeA     body2:(CCNode *)nodeB
{
    NSLog(@"HELLO");
    return YES;
}

By default everything collides in cocos2d, but if you set the collisionGroup of two bodies to be the same then they wouldn't collide.