2012-11-27 33 views
0

我正在研究類似於跳棋的雙人iOS遊戲。我使用cocos2d來創建這個遊戲。如何在cocos2d遊戲中添加短暫停頓(思考時間)

我希望玩家的移動呈現和計算機的移動呈現模擬思考時間之間的思考時間爲0.5秒。

遊戲使用NSNotification事件進行控制,看起來像這樣的流動...

播放器(計算機或人)提交的舉動 - >董事會增加了新的精靈 - >遊戲控制器更新當前玩家並要求他們提交移動。

我試過在棋盤更新結束或遊戲更新開始時添加了usleep(500000)。最終發生的事情是,在棋盤更新中添加的精靈,對於人類玩家,直到電腦玩家提交移動後纔會顯示出來。所以遊戲等待500毫秒,然後更新兩個動作。

有沒有辦法強制CCLayer在睡眠之前更新它的子精靈,還是隻有更好的方法來增加這個思考時間?

感謝

回答

1

如果您安排用於接收控制器的更新,你可能會下滑時間更新:(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個繪製週期。

+0

工作就像一個魅力! – user467384