如何在cocos2d游戏中添加短暂的暂停(思考时间)



我正在开发一款类似跳棋的双人iOS游戏。我正在使用cocos2d来创建这个游戏。

我希望在玩家的移动渲染和计算机的移动渲染之间有0.5秒的思考时间来模拟思考时间。

游戏的流程由NSNotification事件控制,看起来像这样。。。

玩家(计算机或人类)提交移动->棋盘添加新的精灵->游戏控制器更新当前玩家并要求他们提交移动。

我试过在棋盘更新结束或游戏更新开始时添加usleep(500000)。最终发生的是,在棋盘更新中添加的精灵,对于人类玩家来说,只有在计算机玩家提交移动后才会出现。因此,游戏等待500毫秒,然后用这两个动作进行更新。

有没有办法强制CCLayer在usleep之前更新其子精灵,或者有没有更好的方法来添加这个思考时间?

感谢

如果您计划在控制器中接收更新,您可以在update:(ccTime)dt函数中滑动时间。

在.h 中

float _slipTime;

在.m 中

// with other declaratives
static float THINK_TIME=.5f;

// last line before the stall

_slipTime=0.f; 
[self schedule:@selector(pauseForThink:)];

-(void) pauseForThink:(ccTime) dt {
_slipTime+=dt;
if(_slipTime>THINK_TIME) {
[self unschedule:@selector(pauseForThink:)];
// trigger here whatever you wanted to accomplish after
// the think pause.
}
}

好吧,这很简单,但可以防止主循环被阻塞(这就是睡眠中发生的事情)。当以60 FPS的速度运行时,pauseForThink方法将被调用约30次,在暂停期间,cocos将有30个绘制周期。

最新更新