cocos2d v3碰撞检测

时间:2014-03-27 06:55:21

标签: cocos2d-iphone collision-detection collision

我正在尝试检查两个物体的碰撞碰撞,但碰撞检测回调没有被触发。 这是我的代码:

1)我的CCScene实现了CCPhysicsCollisionDelegate协议

2)我为物理设置了碰撞委托

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

3)对于两个身体中的每一个,我设置了碰撞类型

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

4)就是这样,当这两个实体发生碰撞时,没有一个CCPhysicsCollisionDelegate回调方法被调用。

- (BOOL)ccPhysicsCollisionBegin:(CCPhysicsCollisionPair *)pair typeA:(CCNode *)nodeA     typeB:(CCNode *)nodeB
{
    NSLog(@"HELLO");
    return YES;
}
你可以帮我解决这个问题吗?您是否能够在cocos2d v3中收到冲突回调?

提前致谢

1 个答案:

答案 0 :(得分:3)

在cocos2d v3 physics中,collisionType消除了设置整数位掩码以定义冲突类型的需要。参数名称CCPhysicsCollisionDelegate方法必须是您要自己处理的collisionTypes。所以在你的情况下,碰撞回调方法应该是

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

默认情况下,所有内容都会在cocos2d中发生冲突,但如果将两个实体的collisionGroup设置为相同,则它们不会发生碰撞。