Kontra.js | Обнаружение столкновений

Я пробовал несколько библиотек 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";
    }
  }
}

Это сводит меня с ума, и я не могу найти в Интернете ничего, что могло бы помочь! Пожалуйста помоги!

Некоторое время я был в тупике, но проблема проста: вы постоянно сбрасываете цвет на красный для спрайтов, которые сталкиваются с другими. Только самый последний спрайт остается зеленым, потому что после положительного нет отрицательного теста. codepen.io/anon/pen/marjov?editors=0010

Chris G 18.12.2018 13:44

Кстати, мне также пришлось исправить петли for. С вашим кодом все столкновения спрайтов проверялись дважды, и спрайты сравнивались сами с собой.

Chris G 18.12.2018 13:52
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
172
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

Вы прекрасный гений Крис! Спасибо!

Другие вопросы по теме