Sprite kit 我怎样才能推迟我的外星人';进入视野后不久就要发射激光?

Sprite kit 我怎样才能推迟我的外星人';进入视野后不久就要发射激光?,sprite-kit,Sprite Kit,正如我的应用程序现在所展示的那样,每个外星人一进入视图就会立即开火一次。根据下面的代码,我如何编辑以允许每个外星人在进入视图后不久拍摄,而不是在[self addChild…]之后立即拍摄??我对时间的选择并不挑剔,我只是想随机化一点。谢谢 alienLaser = [_alienLasers objectAtIndex:_nextAlienLaser]; _nextAlienLaser++; if (_nextAlienLaser >= _alienLase

正如我的应用程序现在所展示的那样,每个外星人一进入视图就会立即开火一次。根据下面的代码,我如何编辑以允许每个外星人在进入视图后不久拍摄,而不是在
[self addChild…]
之后立即拍摄??我对时间的选择并不挑剔,我只是想随机化一点。谢谢

    alienLaser = [_alienLasers objectAtIndex:_nextAlienLaser];

    _nextAlienLaser++;


    if (_nextAlienLaser >= _alienLasers.count) _nextAlienLaser = 0;

    alienLaser.position = ccpAdd(alien.position, ccp(alienLaser.contentSize.width/8, 0));
    alienLaser.visible = YES;
    [alienLaser stopAllActions];
    [alienLaser runAction:[CCSequence actions:
                           [CCMoveBy actionWithDuration:300 position:ccp(winSize.width, -100000)],
                           [CCCallFuncN actionWithTarget:self selector:@selector(setInvisible:)],
                           nil]];

不要使用睡眠。那将是一个可怕的想法。搜索“睡眠”,看看他们怎么说。相反,只需创建一个等待操作。然后将该动作与其他动作一起添加到序列中

SKAction *wait = [SKAction waitForDuration:0.5];
SKAction *seq = [SKAction sequence:@[wait,shoot,move]];
[alienLaser runAction:seq];

您可以使用
sleep()并输入一个随机整数,比如1-5。尝试一下。上次我这么做的时候。。。它似乎扰乱了很多事情。这不一定是正统的方法吗?嗯,
sleep
在主线程上运行,这可能会中断也在主线程上运行的其他进程。实际上,它停止了主线程上的所有执行。它还停止所有UI交互。我建议在后台线程上运行它。我会检查它。谢谢