我必须检测两个SKSpriteNode( 墙 , man )之间的碰撞SKNode 背景 。 后台 节点是主要SKScene gameScene 类的子节点。当我想使用方法
检测碰撞时- (void) didBeginContact:(SKPhysicsContact *)contact {
SKPhysicsBody *firstBody, *secondBody;
if (contact.bodyA.categoryBitMask < contact.bodyB.categoryBitMask)
{
firstBody = contact.bodyA;
secondBody = contact.bodyB;
}
else {
firstBody = contact.bodyB;
secondBody = contact.bodyA;
}
NSLog(@"contact happened");
}
但未发现碰撞检测。请帮忙。
答案 0 :(得分:1)
您可能遇到以下两个问题之一:
您未设置contactDelegate
对象的SKPhysicsWorld
属性。
您未正确设置类别和联系测试位。
以下是设置类别和联系测试位的方法:
#define kCategoryOne (1 << 0)
#define kCategoryTwo (1 << 1)
bodyA.categoryBitMask = kCategoryOne;
bodyA.contactTestBitMask = kCategoryTwo;
bodyB.categoryBitMask = kCategoryTwo;
bodyB.contactTestBitMask = kCategoryOne;