Cocos2d iphone 在随机时间安排精灵Cocos2d 3.0

Cocos2d iphone 在随机时间安排精灵Cocos2d 3.0,cocos2d-iphone,sprite,arc4random,Cocos2d Iphone,Sprite,Arc4random,我想在游戏中随机安排这两个精灵,然后不断更改时间,使精灵随机出现 我相信这样的事情是必须做的,但它没有起作用 int minDuration = 5.0; int maxDuration = 30.0; int rangeDuration = maxDuration - minDuration; int randomDuration = (arc4random() % rangeDuration) + minDuration; if (randomDuration == randomDurat

我想在游戏中随机安排这两个精灵,然后不断更改时间,使精灵随机出现

我相信这样的事情是必须做的,但它没有起作用

int minDuration = 5.0;
int maxDuration = 30.0;
int rangeDuration = maxDuration - minDuration;
int randomDuration = (arc4random() % rangeDuration) + minDuration;

if (randomDuration == randomDuration) {
[self schedule:@selector(addshieldICON:) interval:10];
[self schedule:@selector(addspeedICON:) interval:10];
}

有什么帮助或建议吗?谢谢

我想先试试这样的方法。从你的问题很难判断你是想让这两个精灵同时出现,还是想要两个单独的时间表。无论哪种方式,都可以修改此代码以完成工作

-(void)scheduleWithRandomInterval {
    int minDuration = 5.0;
    int maxDuration = 30.0;
    int rangeDuration = maxDuration - minDuration;
    int randomDuration = (arc4random() % rangeDuration) + minDuration;

    [self scheduleOnce:@selector(showIcons) delay:randomDuration];
}

-(void)showIcons {
    [self addshieldICON];
    [self addspeedICON];
    [self scheduleWithRandomInterval];
}
不过需要注意的是:我在v2.1中遇到了一些问题,从它自己的选择器添加了一个新的调度程序。如果您注意到
scheduleWithRandomInterval
没有被多次调用,那么您可能需要做一些黑客工作来绕过它。过去我是这样做的

而不是

    [self scheduleWithRandomInterval];
我会用

    [self delayedScheduleWithRandomInterval];
具有处理双延迟的新功能

-(void)delayedScheduleWithRandomInterval {
    [self scheduleOnce:@selector(scheduleWithRandomInterval) 0.01];
}

randomDuration进入interval,在您调用的选择器中再次运行上面的代码(再次使用randomDuration作为interval)