CCActionDelay в конце игровой последовательности
Мой герой спрайт на физическом спрайте. Если игрок (пользователь) не двигает героя в течение 2 секунд, касаясь спрайта, я хочу закончить игру. В методе обновления я проверяю, соприкасаются ли два спрайта дольше 2 секунд, и действительно ли запускается действие "игра окончена". Это код
if( TWO SPRITES ARE TOUCHING && USER ISN"T TOUCHING THE SCREEN ){
[_hero runAction:[CCActionSequence actions:[CCActionDelay actionWithDuration:2.0f],
_gameOverAction,
nil]];
}
Действие окончания игры запускается, даже если пользователь удерживает нажатой клавишу. В основном, если вы не коснетесь экрана, чтобы переместить спрайт, игра должна закончиться. Какие-либо предложения?
1 ответ
В вашем текущем коде, как только два спрайта соприкасаются, а пользователь не касается экрана, он быстро отключается от действия. Это произойдет через 2 секунды, не смотря ни на что, поскольку оно никогда не отменяется.
Вместо этого вам нужно сохранить переменную того времени, когда это произошло в последний раз, и проверить, прошло ли с тех пор 2 секунды в цикле обновления. Если это так, то вы можете вызвать метод game over.