Estoy haciendo un juego en javascript y funciona correctamente, pero tengo que hacer una condición de que si han transcurrido 5 segundos, aumente la velocidad del automóvil en +1 y para eso primero usé setinterval y settimeout pero eso no funcionó bien porque no fueron precisos, así que estoy usando date.now () y lo comparo con la última hora y verifico si el tiempo transcurrido es de 5000 ms o no, ahora el problema es que una vez que se pone en una condición, sigue funcionando en la misma condición y no puede compruébalo dos veces aquí está mi código: -
function runGame() { let car = document.querySelector('.myCar'); let road = gameArea.getBoundingClientRect(); aRect = car.getBoundingClientRect(); const d = new Date(); let ms = d.getSeconds(); // console.log(ms) if (player.start) { moveLines(); moveEnemy(car); const startTime = Date.now(); var interval = 5000; // get seconds const start_time = Date.now() //this is the place where the main problem starts if (Math.round(Date.now() - player.time_value) == interval) { player.speed += 1 player.score_var += 1 seconds = 0; interval += 5000 } else { // console.log(Math.round(startTime-Date.now()),'this is else') console.log(player.time_value, 'this is the start time') } if (keys.ArrowUp && player.y > (road.top + 150)) { player.y -= player.speed } if (keys.ArrowDown && player.y < (road.bottom - 85)) { player.y += player.speed } if (keys.ArrowLeft && player.x > 0) { player.x -= player.speed } if (keys.ArrowRight && player.x < (road.width - 50)) { player.x += player.speed } car.style.top = player.y + "px"; car.style.left = player.x + "px"; window.requestAnimationFrame(runGame); score.innerText = "Score: " + player.score + "\nSpeed: " + player.speed; } }
aquí player.time_value es estático que se genera cuando el juego se inicializa (está en otra función)