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

时间:2013-11-25 14:07:11

标签: ios7 xcode5 sprite-kit collision-detection

我必须检测两个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");
}

但未发现碰撞检测。请帮忙。

1 个答案:

答案 0 :(得分:1)

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

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

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

  3. 以下是设置类别和联系测试位的方法:

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