#javascript #timing
#javascript #время
Вопрос:
Итак, у меня есть функция обнаружения столкновений, которую я использую для всех спрайтов «Мусора». Я перебираю каждый спрайт «Мусора» и вызываю эту функцию. Проблема в том, что иногда у игры недостаточно времени, чтобы обнаружить касание «пулевого» спрайта, прежде чем он удалится от спрайта, не касаясь его. Я не уверен, как бороться с этим, кроме, возможно, замедления пули, что я бы предпочел, чтобы меня не заставляли делать. Это часть моего «маркерного» кода:
document.addEventListener("gameLoop", function () {
for (var l = 0; l < bullets.length; l ) {
(function () {
var n = bullets[l]
syncPosition(n)
n.drawSprite()
move(n, n.speed)
n.distanceCount = n.speed //n.speed = 30
if (n.distanceCount > 500) {
deleteSprite(n, l) }
})()
}
})
Это часть моего кода «мусора»:
document.addEventListener("gameLoop", function () {
for (var l = 0; l < debris.length; l ) {
(function () {
var n = debris[l]
var y = 0
if (tickCount % 30 == 0) {
n.speed = (Math.random() .5) * 2
}
if (!freezeDebris) {
var y = n.element.style.top.replace(/[^d.]/g,'');
y = Number(y)
y = n.speed
if (y <= window.innerHeight window.scrollY) {
y = "px"
n.element.style.top = y
} else {
deleteSprite(n, l)
}
}
if (detectTouch(n, bullets)) {
deleteSprite(n, l)
}
Это пример того, что я вижу:
https://imgur.com/a/9SUs3oi
И если вам нужно больше контекста, вот весь мой проект: https://drive.google.com/drive/folders/1eSGxBPHy2cWASaxYUW3TivtirRyZm5Xy?usp=sharing
Комментарии:
1. Запускайте игровой цикл в два раза чаще и замедляйте все в 2 раза.
2. Я думаю, вам следует использовать repl.it вместо Google docs.