我是cocos2d的新手开发者,所以请耐心等待我。感谢。
我想要实现的是两个具有相同碰撞类型的实体(它们也不在自定义类中,只是CCSprite)只与彼此和地面(例如碎片)相撞而不与其他任何东西碰撞。我不明白的是如何格式化ccPhysicsCollisionBegin方法。如果我这样格式化:
-(BOOL)ccPhysicsCollisionBegin:(CCPhysicsCollisionPair *)pair debris:(CCSprite *)debris debris:(CCSprite *)debris2
并返回YES它仍会影响其他不需要的身体,经过几次CCLOG后我发现它从未被调用过。那么实现我想要的正确方法是什么?希望我所要求的是可能的。
使用的代码:
debris.physicsBody = [CCPhysicsBody bodyWithRect:[debris boundingBox] cornerRadius:0];
debris.name = @"Debris";
debris.physicsBody.collisionType = @"debris";
[physicsNode addChild:debris];
答案 0 :(得分:0)
您需要设置collisionMask
,它定义了身体可以碰撞的内容。您也应该设置collisionCategories
:
debris.physicsBody = [CCPhysicsBody bodyWithRect:[debris boundingBox] cornerRadius:0];
debris.name = @"Debris";
debris.physicsBody.collisionType = @"debris";
debris.physicsBody.collisionCategories = @[ @"debris" ];
debris.physicsBody.collisionMask = @[ @"debris" ];
[physicsNode addChild:debris];