1

我正在尝试从左到右在屏幕上移动 Sprite。精灵应该从屏幕右侧右侧的随机 y 位置开始。使用 repeatActionForever 和带有随机 Y 数的整数,我希望精灵从不同的 y 位置开始重复动作。除了将随机 int 放入更新方法之外,关于如何实现这一点的任何想法?无论如何,它可以通过行动来实现吗?

我在 Sprite 上使用这种方法:

    int randomY = (arc4random()%121;

    SKAction *pos = [SKAction moveTo:CGPointMake((STAGESIZE.width+(self.size.width/2)),randomY) duration:0];
    SKAction *move = [SKAction moveToX:0-self.size.width/2 duration:3];
    SKAction *wait = [SKAction waitForDuration:1 withRange:5];

    SKAction *sequence = [SKAction sequence:@[pos,move,wait]];
    SKAction *repeater = [SKAction repeatActionForever:sequence];
    [self runAction:repeater];
4

1 回答 1

2

一旦定义并运行,就无法随机化标准动作。但是有一种解决方法可以使用 [customActionWithDuration] 来实现所需的效果。1

SKAction* randomPositionAction = [SKAction customActionWithDuration:0 actionBlock:^(SKNode *node,CGFloat elapsedTime){
                int randomY = arc4random_uniform(121);
                //Set position instead of running action with duration 0
                [node setPosition:CGPointMake((STAGESIZE.width+(self.size.width/2)),randomY)];
            }];

RandomY 是在每次运行动作时随机化的,并且根据它设置位置。

于 2013-12-18T08:34:21.157 回答