如何生成 - SKAction - 随机运动

时间:2014-03-31 14:00:26

标签: xcode sprite-kit skaction

我是sprite kit的新手.. 我想在x轴上随机移动一个精灵。 为此,我需要知道如何在操作完成时调用另一个方法/使用其他随机x值的相同方法。 现在,精灵停在第一个随机值,不开始移动到下一个。

我试过了:

-(void) move:(CGSize)size {

  if (x1 == x2) {
     x2 = (arc4random() % 320);
     e = 0;
 }

 if (x2 > x1) {
     e = x2 - x1;
 }


 if (x1 > x2) {
     e = x1 -x2;
 }

 t = e/100;

 SKAction *action = [SKAction moveToX:x2 duration:e];
 [_spriteL runAction: [SKAction  repeatAction:action count:1]];

 x1 = x2;

 [self move:size];
  }

谢谢

1 个答案:

答案 0 :(得分:0)

我有类似的问题。我试图沿着x轴移动一艘宇宙飞船。我基本上生成了一个随机数并用它运行了一个动作。然后在完成块内我再次递归调用该方法以重复该过程:

- (void)autopilot {
    if (!self.dead) {
        CGVector delta = CGVectorMake((arc4random() % 125), 0);

        NSInteger multiplier = arc4random_uniform(2);
        multiplier = multiplier == 0 ? -1 : 1;
        delta.dx *= multiplier;

        CGPoint position = self.position;
        position.x = position.x <= 0.0 ? 0.0 : position.x;
        position.x = position.x >= self.size.width ? self.size.width : position.x;

        SKAction *move = [SKAction moveBy:delta duration:0.4];
        [self runAction:move completion:^{
            [self autopilot];
            [self shoot];
        }];
    }
}