SpriteKit中两个SKSpriteNode之间的碰撞检测



我必须检测两个SKSpriteNode(wallman)之间的碰撞,这是SKNode>背景的子级。背景节点是主SKScene游戏场景类的子节点。当我想使用方法检测碰撞时

- (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");
}

但是没有发现碰撞检测。请帮忙。

您可能遇到以下两个问题之一:

  1. 您没有设置SKPhysicsWorld对象的contactDelegate属性。

  2. 您没有正确设置类别和联系人测试位。

以下是如何设置类别和接触测试位:

#define kCategoryOne (1 << 0)
#define kCategoryTwo (1 << 1)
bodyA.categoryBitMask = kCategoryOne;
bodyA.contactTestBitMask = kCategoryTwo;
bodyB.categoryBitMask = kCategoryTwo;
bodyB.contactTestBitMask = kCategoryOne;

最新更新