塔防schedule问题

想做一个简单的塔防游戏,卡在出怪问题了。
我知道cocos2dx中schedule函数,可以定时出怪,设定调用次数,时间间隔,以及延时。

在schedule写一个固定的出怪回调函数,就可以出怪。

但是觉得这样太单调,

想向保卫萝卜一样, 第一波怪可以出N1个,时间间隔为M1
第二波怪可以出N2个,时间间隔为M2,且在第一波被完全消灭K2时间后
第三波怪可以出N3个,时间间隔为M3,且在第二波被完全消灭K3时间后
。。。。。。。。。。。。。。。。
一直可以出H波怪, 这个H值可以设定。比如有的关卡15波,有的是20波。

不想写15或者20个schedule的回调函数,请问大家一般用什么方法?

大家给力回复我的问题呀,到时候我把源码给大家看,用的《保卫萝卜》的资源,写个和保卫萝卜一样的塔防练练手!!!:2:

一个一维数组,存两只怪之间的间隔时间

一个一维数组,存两波怪之间的间隔时间

一个二维数组,存每波怪的怪物类型

两个定时器,一个是怪物之间的定时器1,一个是波数之间的定时器2

两个变量,第M波的第N只怪。

根据M和N两个变量从数组里取出对应的数据。

定时器1每产生一只怪,N++,当达到最大个数后,关闭定时器1,开启定时器2;达到定时器2时间后,关掉定时器2开启定时器1,M++

我觉得你这个有多少波怪就应该调用多少次schedule函数吧,因为每次出的怪可能不一样吧,只是这个调用的时间需要弄一下,这个时间是没法写成固定值的,所以可以用CCNotificationCenter事件监听器,只是想法,不知道行不行了。

楼主后来用的什么方法啊

问题解决了,原型如下
开启一个schedule,该schedule的时间间隔能被每一波怪的出怪时间间隔整除。
例如第一波怪时间间隔为0.25s,第二波怪时间间隔为0.5s,第三波怪时间间隔为0.75s,那么schedule的时间间隔可以为0.25s(0.125s,0.05s …)
设有N波怪,每波怪的个数分别为X1,X2,X3…XN,每一波怪的出怪时间间隔分别为Y1,Y2,Y3…YN
创建static int wave记住当前为第几波;大小为N的int 型数组int eachWave记住每一波怪物数量 ;大小为N的float型数组float interval记住间隔时间。大小为N的float型数组记录每一波开始时间float beginTime

schedule (float dt)
//获取累计时间
static curtime = 0;
curtime += dt;
//判定是否产生怪物
if wave < N
{
if (累计时间curtime -beginTime) / interval= 整数倍M
{
if M< eachWave
{
产生怪物
}
else
{
wave++;
beginTime = curtime;
}
}
}
else
{
结束schedule
}

给你点小提示吧

整个塔防游戏,除了动画对象的控制,你至多只需要一个定时器来驱动整个游戏进程,只需要一个哦

√√√w1024.1024 这种实现的源码,可能没人看吧