Я пытаюсь разблокировать игру. У меня есть массив объектов, и я сделал столкновение границ. Но теперь я застрял в столкновении между объектами. Я сделал цикл над объектами в массиве, но он останавливается на последнем. Как я могу совершать проверку столкновений по каждому объекту каждый раз, когда я перемещаюсь с помощью выбранного объекта? Полный код здесь: http://foxfcb.sweb.cz/ Я новичок в программировании, поэтому, пожалуйста, будьте терпеливы.Несколько столкновений в холсте
canvas.addEventListener('mousemove', function (e) {
...
var shapes = myState.shapes;
var l = shapes.length;
for (var i = 0; i < l; i++) {
var shape = myState.shapes[i];
var selection = myState.selection;
// collision between objects
if (selection.x < (shape.x + shape.w) && (selection.x + selection.w) > shape.x &&
selection.y < (shape.y + shape.h) && (selection.y + selection.h) > shape.y) {
myState.valid = true; //stop
}
// boundaries collision
else if (myState.selection.x < 0 || myState.selection.y < 0 || myState.selection.x + myState.selection.w > 600 || myState.selection.y + myState.selection.h > 600) {
myState.valid = true; //stop
}
else {
myState.valid = false; //moving
}
}
}
Жаль, что я не писал раньше. Это отличная идея с перерывом, но есть еще одна ошибка. В массиве есть объект, с которым я действительно перемещаюсь. И для этого он переходит в состояние и перестает двигаться в самом начале. Мне нужно извлечь объект, я действительно перехожу из массива. Но я думаю, что смогу это сделать. Большое спасибо. Направьте свою помощь. –
Хорошо, я сделал условие для своего массива, и он работает! :) if (фигуры [i]! == myState.selection) { ... } –