我想进行一次重复,SKAction
但是每次重复都带有随机值。我在这里阅读了这个问题,它显示了一种解决方法。但是,我希望动画精灵的动作具有动画效果,而不仅仅是改变其位置。我想出的一个解决方案是运行一系列动作,最后一个动作以递归方式调用我的move方法:
- (void)moveTheBomber {
__weak typeof(self) weakSelf = self;
float randomX = // determine new "randomX" position
SKAction *moveAction = [SKAction moveToX:randomX duration:0.25f];
SKAction *waitAction = [SKAction waitForDuration:0.15 withRange:0.4];
SKAction *completionAction = [SKAction customActionWithDuration:0 actionBlock:^(SKNode *node, CGFloat elapsedTime) {
[weakSelf moveTheBomber];
}];
SKAction *sequence = [SKAction sequence:@[moveAction, waitAction, completionAction]];
[self.bomber runAction:sequence];
}
递归调用此方法对我来说感觉很“棘手”,但是鉴于我对SpriteKit的有限经验,这似乎是实现此目的的最明显方法。
如何永久为屏幕上的精灵随机运动设置动画?
没有钟声,但是我认为这应该可以帮助您:
编辑:对不起,应该是:
SKAction *randomXMovement = [SKAction runBlock:^(void){
NSInteger xMovement = arc4random() % 20;
NSInteger leftOrRight = arc4random() % 2;
if (leftOrRight == 1) {
xMovement *= -1;
}
SKAction *moveX = [SKAction moveByX:xMovement y:0 duration:1.0];
[aSprite runAction:moveX];
}];
SKAction *wait = [SKAction waitForDuration:1.0];
SKAction *sequence = [SKAction sequence:@[randomXMovement, wait]];
SKAction *repeat = [SKAction repeatActionForever:sequence];
[aSprite runAction: repeat];
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句