Ios Sprite套件-检测触点

Ios Sprite套件-检测触点,ios,objective-c,sprite-kit,Ios,Objective C,Sprite Kit,我有两个精灵节点: -(void)createPlayer { SKSpriteNode *player = [SKSpriteNode node]; player.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:enemy.size]; player.physicsBody.categoryBitMask = playerCategory; player.physicsBody.contactTestB

我有两个精灵节点:

-(void)createPlayer {
    SKSpriteNode *player = [SKSpriteNode node];

    player.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:enemy.size];
    player.physicsBody.categoryBitMask = playerCategory;
    player.physicsBody.contactTestBitMask = enemyCategory;

    player.position = CGPointMake(100, 160);
    player.name = @"player";
    player.zPosition = 100;

    [self addChild:player];
}

-(void)createEnemy {
    SKSpriteNode *enemy = [SKSpriteNode node];

    enemy.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:enemy.size];
    enemy.physicsBody.categoryBitMask = enemyCategory;
    enemy.physicsBody.contactTestBitMask = playerCategory;

    enemy.position = CGPointMake(300, 160);
    enemy.name = @"player";
    enemy.zPosition = 100;

    [self addChild:enemy];
}
以及MyScene.h中的以下内容

static const uint32_t playerCategory =  0x1 << 0;
static const uint32_t enemyCategory =  0x1 << 1;

static const uint32\u t playerCategory=0x1您的碰撞检测需要的代理方法

在您的MyScene.h中,您的代码应该如下所示:

@interface MyScene : SKScene <SKPhysicsContactDelegate>
现在您需要实现委托方法didBeginContact

self.physicsWorld.contactDelegate = self;
- (void)didBeginContact:(SKPhysicsContact *)contact {
    uint32_t collision = (contact.bodyA.categoryBitMask | contact.bodyB.categoryBitMask);

    if (collision == (playerCategory | enemyCategory)) {
        // Do your stuff
    }
}

有什么问题吗?你哪里有困难?就像我在上面的帖子里说的。如何检测他们是否进行了接触,以便我可以根据他们的接触添加操作?所以,如果玩家与敌人取得联系,请做任何事情..将联系人代理分配给您的SKPhysicsWorld,然后收听联系人代理消息:我收到self.physicsWorld.contactDelegate=YES的错误;当我把“是”改为“自我”时。玩家对象将敌人推离屏幕。。因此,我认为这是一个冲突,而不仅仅是联系。我纠正语法的错误是contactDelegate=self,如果您不想发生冲突,请将physicsBody.collisionBitMask设置为0,如果需要,您可以将委托方法更改为DidendContacts!非常感谢你!我一直在努力为精灵节点找到合适的物理实体尺寸。但我会弄明白的。再次感谢!如何计算两个物体之间的碰撞力?可以使用每个物体的速度来计算该值,如node.physicsBody.velocity这将对您有所帮助