我正在使用cocos2d在iPhone上制作游戏,我有一个问题 在我的init方法中,我这样做:
[self schedule:@selector(newMonster:) interval:1];
每秒钟创造一个新怪物 但我希望间隔随时间而变化。例如:
我该怎么做?
谢谢!
答案 0 :(得分:1)
创建名为NSDate
的{{1}}的实例变量和属性,使其成为保留属性并进行综合。
一旦你的第一个怪物被创建,请设置它:
monsterSpawnStartDate
用这个替换你的代码:
self.monsterSpawnStartDate = [NSDate date]; // Current date and time
像这样实施[self schedule:@selector(adjustMonsterSpawnRate) interval:0.1]; // Seems like you want it to fire every 0.1 seconds
:
adjustMonsterSpawnRate
答案 1 :(得分:1)
答案 2 :(得分:0)
我认为更好的选择是使用预定的功能进行计时,并使用累计时间触发敌人创建,如下所示
self.time_since_last_monster = 0 [自我安排:@selector(new_monster :) interval:0.3];
-(void) new_monster:(ccTime)dt{
self.time_since_last_monster += dt;
if(self.time_since_last_monster > monster_interval){
self.time_since_last_monster -= monster_interval;
[self create_new_monster];
// at this point based on some condition, you can now change monster_interval
}
}
这将提供更大的灵活性。
答案 3 :(得分:0)
我很笨,所以这就是我要做的事情:
<。>在.h中设置一个浮动float nextMonsterIn;
然后在身体
nextMonsterIn = 1.0;
[self scheduleOnce:@selector(newMonster:) interval:nextMonsterIn];
[self schedule:@selector(kickUpDifficulty:) interval:10];
- (void) newMonster : (ccTime) dt
{
[self scheduleOnce:@selector(newMonster:) interval:nextMonsterIn];
//-----make a monster-----
}
- (void) kickUpDifficulty : (ccTime) dt
{
if(nextMonsterIn == 1.0)
nextMonsterIn = 0.8;
else if(nextMonsterIn == 0.8)
{
nextMonsterIn = 0.5;
[self unschedule:@selector(kickUpDifficulty:)];
}
}
基本上每当我调用newMonster时,我会根据当前的延迟递归重新安排newMonster,然后我可以调整计时器中的延迟或每次杀死怪物或任何地方。