0

スプライト キットは初めてです。スプライトを 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];
  }

ありがとう

4

1 に答える 1

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];
        }];
    }
}
于 2014-03-31T14:09:50.013 に答える