Я написал простой холст с несколькими пузырьками, которые плавают вокруг. Они должны быть зелеными, когда они не сталкиваются и не краснеют, если они есть. По какой-то причине они все зеленые, но одно. И когда пузырьки сталкиваются, единственные, которые становятся красными, - это те, которые касаются этого оригинального пузыря, который обычно не запускается зеленым. Я знаю, что мне не хватает чего-то действительно очевидного для вас, ребята, но я просмотрел его тысячу раз и просто не вижу этого. Если кто-нибудь может, пожалуйста, дайте мне знать, я готов чувствовать себя глупо ... спасибо.Обнаружение столкновений Javascript не работает (скорее я не работаю)
Вот ссылка на суть GitHub:
https://gist.github.com/anonymous/e172bb18c078a2e9a797b8a30fdafcc3
Вот фрагмент из обнаружения столкновений для рисования холста:
// Draw to Canvas
var draw = function() {
ctx.clearRect(0,0,600,400);
for(var i = 0 ; i < spawnArr.length; i++){
// Collision Detect & Correct
for(var j = 0; j < spawnArr.length; j++) {
var dx = spawnArr[i].x - spawnArr[j].x;
var dy = spawnArr[i].y - spawnArr[j].y;
var distance = Math.sqrt(dx * dx + dy * dy);
if (distance < spawnArr[i].rad + spawnArr[j].rad) {
ctx.strokeStyle = "#FF0000";
ctx.beginPath();
ctx.arc(spawnArr[i].x, spawnArr[i].y, spawnArr[i].rad, 0, 2*Math.PI);
ctx.closePath();
ctx.stroke();
ctx.beginPath();
ctx.arc(spawnArr[j].x, spawnArr[j].y, spawnArr[j].rad, 0, 2*Math.PI);
ctx.closePath();
ctx.stroke();
// console.log('hit');
}
else {
ctx.strokeStyle = "#00FF00";
ctx.beginPath();
ctx.arc(spawnArr[i].x, spawnArr[i].y, spawnArr[i].rad, 0, 2*Math.PI);
ctx.closePath();
ctx.stroke();
ctx.beginPath();
ctx.arc(spawnArr[j].x, spawnArr[j].y, spawnArr[j].rad, 0, 2*Math.PI);
ctx.closePath();
ctx.stroke();
//console.log('miss');
}
}
Удивительный, я дам ему выстрел. Спасибо, что ответили. – DGwang
Lol, я работаю над этим уже 2 дня и, наконец, получил его. Как сказал Blindman67, я дважды рисовал пузыри. Однако это все равно не соответствовало рисованию кругов правильных цветов. Я понял, что утверждение: t1.style = "# 00FF00" должно быть поставлено перед циклом for (var i ..), чтобы полностью восстановить цвета перед рисованием на холст. Также @ Blindmand67, ваше редактирование было более эффективным и более гладким, спасибо еще раз! – DGwang