我是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];
}
谢谢
答案 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];
}];
}
}