Sprite Kit在-Update方法中删除Array中的SKSpriteNodes

时间:2014-11-20 01:58:39

标签: objective-c arrays sprite-kit skspritenode skphysicsbody

我在精灵工具包中有一系列精灵,在我的更新方法中,我检查这些精灵是否从屏幕底部掉下来。如果他们这样做,我将他们从他们的父母中删除,我将他们从他们的阵列中删除..我想知道如果他们这样做,如果这是最好的做法吗?是否会降低性能?如果是这样,那么实现这个目标的最佳方法是什么?

这是我的代码:

 -(void)update:(CFTimeInterval)currentTime {

     // Detect when animals fall off bottom of screen
NSMutableArray *animalsToDiscard = [NSMutableArray array];
for (SKSpriteNode* node in animalsArray) {
    if (node.position.y < -node.size.height) {

        NSLog(@"Remove Animal - Lose Life");
        [node removeFromParent];
        [animalsToDiscard addObject:node];
    }
}
[animalsArray removeObjectsInArray:animalsToDiscard];
}

1 个答案:

答案 0 :(得分:1)

您应该使用内置的物理世界来帮助解决此任务。基本上,你会建立一个“地板”,如果你的动物接触它,移除动物节点。

https://stackoverflow.com/a/24195006/2494064

在此链接中,您的“动物”将等同于“泡沫”。如果您进行替换,代码将起作用。