Сравнение значений массивов в мини-игре
На досуге пишу небольшую игру. Есть 2 массива: nodes (блоки) и objects (шары). Нужно проверить столкновение какого-либо шара с каким-либо блоком. Функция идет через requestAnimationFrame.
function() {
for (var i in grid.nodes) {
for (var j in this.objects) {
var enemy = grid.nodes[i];
var ball = this.objects[j];
if (isColl(ball.x-1,ball.y-1,ball.w+1,ball.h+1,enemy.x,enemy.y,enemy.w,enemy.h)) {
if (ball.x > enemy.x && ball.x < enemy.x + enemy.w && (ball.y > enemy.y || ball.y < enemy.y)) {
ball.ay *= -1;
};
if (ball.y < enemy.y + enemy.h && ball.y > enemy.y && (ball.x < enemy.x || ball.x > enemy.x)) {
ball.ax *= -1;
}
}
}
}
};
Сначала идет проверка на пересечение (isColl(), хитбокс на 1 пиксель больше шара), потом на положение относительно блока и изменение скорости. Как бы работает, но иногда проверка не успевает, и шар не отскакивает от блока( Как это исправить, что почитать/посмотреть, или же вовсе использовать другой алгортим? Заранее спасибо. |
Цитата:
Подними тактовую частоту процессора. Тебе в разгон пекарни. ) В твоем коде нет тайминга, только расчеты хавающие какое-то время, которое теоретически может оказаться больше длительности кадра. |
| Часовой пояс GMT +3, время: 14:35. |