Я кодирую маленькую космическую игру на JavaScript, как мне обнаружить коллизии?
Я зацикливаю игру с помощью requestAnimationFrame (), и мой вопрос:
Как обнаружить коллизию междудва тела, для подсчета (смерти) Переменная увеличивается только один раз вместо непрерывного?
// --- Collision ---
asteroids.forEach(asteroid => {
//if (collisionOccured) { return; } I thought might work...
if (distance(spaceship.x + spaceship.width, spaceship.y + spaceship.width, asteroid.x, asteroid.y) < asteroid.radius + spaceship.width) {
console.log('Collision');
collisionOccured = true;
deaths++;
}
});
Я думаю, я понимаю, в чем проблема, два тела сталкиваются, поэтомурасстояние между ними в n-Frames меньше, чем условие, поэтому переменная death больше учитывает Frames, в которых они сталкиваются, чем количество столкновений.
Но как я могу сделать это правильно?Любая идея?
Если это поможет, вот функция расстояния:
function distance(x1, y1, x2, y2) {
return Math.sqrt(Math.pow(Math.abs(x1 - x2), 2) + Math.pow(Math.abs(y1 - y2), 2));
}