gpt4 book ai didi

ios - 修改正在运行的 SKAction 的速度

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:58:18 25 4
gpt4 key购买 nike

我有这个代码:

@implementation MyScene {
SKAction *delayAction;
}
Inside a method:

delayAction = [SKAction waitForDuration:3.0];
[self runAction:[SKAction repeatActionForever: [SKAction sequence:
@[delayAction, [SKAction ...]]]]]
withKey:@"myKey"];

然后我想减少加类时间。 (此方法在更新时调用:)所以我尝试了:

    - (void)updateVelocity
{
NSLog(@"duration:%f",delayAction.duration);
delayAction.duration = delayAction.duration - 0.001;
}

我得到:

2014-04-04 11:45:05.781 FlyFish[5409:60b] duration:1.300000
2014-04-04 11:45:05.785 FlyFish[5409:60b] duration:1.299000
2014-04-04 11:45:05.800 FlyFish[5409:60b] duration:1.298000
2014-04-04 11:45:05.816 FlyFish[5409:60b] duration:1.297000

这看起来不错,但我的 [SKAction ...] 仍然在 3 秒后继续重复。

最佳答案

我会用不同的方式来做这件事。像这样的……

- (void)recursiveActionMethod
{
if (some end condition is met) {
return;
// this allows you to stop the repeating action.
}

self.duration -= 0.01;
// store duration in a property

SKAction *waitAction = [SKAction waitForDuration:self.duration];
SKAction *theAction = [SKAction doWhatYouWantHere];
SKAction *recursiveAcion = [SKAction performSelector:@selector(recursiveActionMethod) onTarget:self];

SKAction *sequence = [SKAction sequence:@[waitAction, theAction, recursiveAction]];
[self runAction:sequence];
}

这将执行您的操作,然后返回此函数以不同的等待时间再次运行,一次又一次,...

您甚至可以通过设置一些会跳转到 if block 内并停止循环的结束条件来停止序列。

关于ios - 修改正在运行的 SKAction 的速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22859533/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com