Estoy construyendo un juego para practicar mis habilidades. Cada vez que alguien anota un punto, el juego comienza de nuevo muy rápido y me gustaría que le diera un poco de tiempo antes de volver atrás. La función principal se ve así:
function drawGame() { background(); //does the background drawChar(); drawEnemy(); drawBall(); changeMovement(); playerControls(); enemyFollowsBall(); enemyChangePosition(); checkBallCollision(); drawScore(); //if(pointScored()) { //setInterval(drawGame, 1000); //} setTimeout(drawGame, 1); }La función sigue siendo llamada a través de setTimeOut, que gestiona las animaciones del juego. Traté de resolver mi problema con el código comentado (configuré pointScore(), que incrementa el puntaje y hace algunos reinicios, para volver verdadero), pero no funcionó como esperaba. ¿Cómo puedo obtener el efecto esperado?
Seguirías llamando a setTimeout(drawGame, 1); cuando no lo mueve a la declaración else o agrega un retorno después.
function drawGame() { background(); //does the background drawChar(); drawEnemy(); drawBall(); changeMovement(); playerControls(); enemyFollowsBall(); enemyChangePosition(); checkBallCollision(); drawScore(); if (pointScored()) { setInterval(drawGame, 5000); return; // either this } else { // or adding the else here setTimeout(drawGame, 1); } }