Я пробовал несколько библиотек JS сейчас и всегда борюсь с тем, чтобы заставить работать обнаружение столкновений. Это только иногда работает и дает странные результаты!
Простейшим примером этого является приведенный ниже пример Kontra.js (кодовое слово https://codepen.io/yellowsmiley/pen/oJzyrZ/). Он создает несколько спрайтов и проверяет их все на предмет столкновений при каждом обновлении игрового цикла.
for (let i = 0; i < sprites.length; i++) {
for (let j = 0; j < sprites.length; j++) {
let sprite1 = sprites[i];
let sprite2 = sprites[j];
if (isCollide(sprite1, sprite2)) {
sprite1.color = "green";
sprite2.color = "green";
} else {
sprite1.color = "red";
sprite2.color = "red";
}
}
}
Это сводит меня с ума, и я не могу найти в Интернете ничего, что могло бы помочь! Пожалуйста помоги!
Кстати, мне также пришлось исправить петли for. С вашим кодом все столкновения спрайтов проверялись дважды, и спрайты сравнивались сами с собой.
I was stumped for quite some time, but the issue is simple: you are constantly resetting the color to red for sprites that are colliding with others. Only the very last sprite stays green, because there's no negative test following the positive one. codepen.io/anon/pen/marjov?editors=0010 – Chris G Dec 18 at 12:44
Вы прекрасный гений Крис! Спасибо!
Некоторое время я был в тупике, но проблема проста: вы постоянно сбрасываете цвет на красный для спрайтов, которые сталкиваются с другими. Только самый последний спрайт остается зеленым, потому что после положительного нет отрицательного теста. codepen.io/anon/pen/marjov?editors=0010