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.

Другие вопросы по тегам