Возобновить игровой цикл в cocos2d
У меня есть игра с анимацией. В игровой сцене я использую метод, описанный ниже, чтобы поставить игру на паузу (она работает отлично, потому что игра останавливается, когда пользователи нажимают на любую точку устройства iOS):
-(void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch=[touches anyObject];
CGPoint locationOfTouch=[self convertTouchToNodeSpace: touch];
CGRect rectOfScreen=CGRectMake(0, 0, screenSize.width, screenSize.height);
if (CGRectContainsPoint(rectOfScreen, locationOfTouch))
{
[[CCDirector sharedDirector] replaceScene:[PauseScene scene]];
[self unschedule:@selector(spawnEnemies:)];
[self unschedule:@selector(checkCollisionOfEnemyWithBullet:)];
[self unschedule:@selector(update:)];
[self unschedule:@selector(isJoystickActivated:)];
[self unschedule:@selector(checkHasGameEnded:)];
[[CCDirector sharedDirector] pause];
}
}
Чтобы реализовать действие возобновления, я создал PauseLayer:CCLayer, где я реализовал следующий метод для возобновления игры:
-(void) continueGame:(id)sender
{
[[CCDirector sharedDirector] resume];
[[CCDirector sharedDirector] replaceScene:[GameSceneLayer scene]];
//[self resumeSchedulerAndActions];
}
Вот код, как я вызываю метод выше:
CCMenuItemFont* continue_game=[CCMenuItemFont itemWithString:@"continue game" target:self selector:@selector(continueGame:)];
Но когда я выбираю продолжить игру, игра начинается с пустого места: каждое игровое состояние, каждый игровой персонаж будет новым. Как я могу возобновить свою игру с начальной точки, где она была приостановлена пользователем? Спасибо!
1 ответ
Вы можете использовать эти две функции cocos2D для приостановки и возобновления:
[self pauseSchedulerAndActions]; //pause
[self resumeSchedulerAndActions];//resume
Также поддерживайте одну переменную bool и проверяйте ее всякий раз, когда вам это нужно.
bool mISGamePaused;