我正在尝试检查两个物体的碰撞碰撞,但碰撞检测回调没有被触发。 这是我的代码:
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中收到冲突回调?
提前致谢
答案 0 :(得分:3)
在cocos2d v3 physics中,collisionType
消除了设置整数位掩码以定义冲突类型的需要。参数名称CCPhysicsCollisionDelegate
方法必须是您要自己处理的collisionTypes。所以在你的情况下,碰撞回调方法应该是
- (BOOL)ccPhysicsCollisionBegin:(CCPhysicsCollisionPair *)pair body1:(CCNode *)nodeA body2:(CCNode *)nodeB
{
NSLog(@"HELLO");
return YES;
}
默认情况下,所有内容都会在cocos2d中发生冲突,但如果将两个实体的collisionGroup
设置为相同,则它们不会发生碰撞。