在nsarray / nsmutablearray中检测与对象的冲突

时间:2014-03-17 08:25:45

标签: ios objective-c xcode sprite-kit

我制作了一个小型原型游戏,到目前为止一切正常,碰撞也是如此。现在我想优化一些东西。我有不同的属性爬行,我想把它们放在一个数组中。但是我不知道如何检查数组中的对象是否存在冲突,因为命令期待我想要一个SKnode。在这里,我定义了creeps和数组:

SKSpriteNokde *creep1 = [SKSpriteNode spriteNodeWithTexture:_creepTexture1];
[creep1 setScale:1];
creep1.position = CGPointMake( 10, y )
creep1.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:creep1.frame.size];
creep1.physicsBody.dynamic = NO;
[CreepPair addChild:creep1];

SKSpriteNokde *creep2 = [SKSpriteNode spriteNodeWithTexture:_creepTexture2];
[creep2 setScale:2];
creep2.position = CGPointMake( 50, y + creep1.size.height);
creep2.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:creep2.frame.size];
creep2.physicsBody.dynamic = NO;
[CreepPair addChild:creep2];
..

SKSpriteNode *Level1 = [NSArray arrayWithObjects:creep1,creep2,creep3,creep4,nil];

我正在检查碰撞,这有效:

if ([creep1 intersectsNode:Player] {
    creep1.hidden = YES;
    NSLog(@"Lost 1 Life!");
 }

但我想检查这样的所有小动物:

if ([Level1.allobjects intersectsNode:Player] {
    creep1.hidden = YES;
    NSLog(@"Lost 1 Life!");
}

最后一段代码显然不起作用,但我该如何管理呢?

1 个答案:

答案 0 :(得分:0)

这可能有效

for (SKSpriteNokde *creep in Level1)
{
    if ([creep intersectsNode:Player] {
        creep.hidden = YES;
        NSLog(@"Lost 1 Life!");
    }
}

这里我假设Level1是数组。