多重碰撞spritekit



我正在尝试制作一款SpriteKit游戏,但我无法找到或找到多个碰撞检测的好例子。
我的代码:

-(void)didBeginContact:(SKPhysicsContact *)contact{
SKPhysicsBody *firstBody;
SKPhysicsBody *secondBody;
if (contact.bodyA.categoryBitMask < contact.bodyB.categoryBitMask)
{
    firstBody = contact.bodyA;
    secondBody = contact.bodyB;
}
else
{
    firstBody = contact.bodyB;
    secondBody = contact.bodyA;
}
if ((firstBody.categoryBitMask & bulletCategory) != 0) {
    [self updateScore];
    SKNode *applenode = [self childNodeWithName:(@"Apple")];
    applenode.removeFromParent;
    [self updateScore];
    SKScene *sampleScene = [[Level2 alloc] initWithSize:self.size];
    SKTransition *transition = [SKTransition flipVerticalWithDuration:0.5];
    [self.view presentScene:sampleScene transition:transition];
}

在一次碰撞中工作得很好,但我似乎不能让它多次工作。

//对于多重碰撞,你可以添加像

这样的代码
  • (void) didBeginContact: (SKPhysicsContact *)接触{

    CGPoint contactPoint=CGPointMake(0, 0);
    //multiple collision
    if (contact.bodyA.categoryBitMask || contact.bodyB.categoryBitMask)
    {
        //first collision
        if(([contact.bodyA.node.name isEqualToString:@"hero"] && [contact.bodyB.node.name isEqualToString:@"coin"] ) || ([contact.bodyA.node.name isEqualToString:@"coin"] && [contact.bodyB.node.name isEqualToString:@"hero"]) )
        {
            if([contact.bodyA.node.name isEqualToString:@"coin"] )
            {
                [contact.bodyA.node removeFromParent];
            }
            else
            {
                [contact.bodyB.node removeFromParent];
            }
        }
        //second collision
        else if(([contact.bodyA.node.name isEqualToString:@"hero"] && [contact.bodyB.node.name isEqualToString:@"enemy"] ) || ([contact.bodyA.node.name isEqualToString:@"enemy"] && [contact.bodyB.node.name isEqualToString:@"hero"]) )
        {
            if([contact.bodyA.node.name isEqualToString:@"hero"] )
            {
                [contact.bodyA.node removeFromParent];
            }
            else
            {
                [contact.bodyB.node removeFromParent];
            }
        }
    }
    

    }

最新更新