当精灵离开屏幕时移除它



我有一个在屏幕上从左向右移动的精灵,当它离开屏幕时就不会再回来了。哪里是释放它的最佳地点?在-update方法?还是?

你可以使用didSimulatePhysics方法。它在更新方法之后被调用。我们可以确保在更新方法中需要完成的任何事情都完成了,然后清理对象或循环遍历它们并找出需要删除的对象。

 - (void)didSimulatePhysics {
    [self removeAllObstacles];
}
- (void)removeAllObstacles {
    [blocks removeAllChildren];
    [gameLayer enumerateChildNodesWithName:@"baddies" usingBlock:^(SKNode *node, BOOL *stop) {
        if (node.position.x < - 100)
            [node removeFromParent];
    }];
}

是的,它只能在更新方法中添加。因为update:方法将被Sprite Kit自动调用每一帧。

最新更新