Я попытался сделать небольшую «игру» с обнаружением столкновения.Обнаружение столкновений с прямоугольниками
Проблема в том, что в некоторых случаях объекты просто проходят. Я полностью слеп к делу.
Я попытался создать свое собственное обнаружение, который комментировал, а потом я попытался это:
function rectanglesIntersect(minAx, minAy, maxAx, maxAy, minBx, minBy, maxBx, maxBy) {
var aLeftOfB = maxAx < minBx;
var aRightOfB = minAx > maxBx;
var aAboveB = minAy > maxBy;
var aBelowB = maxAy < minBy;
return !(aLeftOfB || aRightOfB || aAboveB || aBelowB);
}
Если вы хотите, чтобы он двигался медленнее, просто измените FPS, и вы можете легко добавить меньше предметов в buttom примера. – Kiksen
Быстро перемещающиеся предметы могут полностью пройти через препятствие во время одного хода - это называется «туннелирование». Здесь показан предыдущий [Q & A] (http://stackoverflow.com/questions/34607871/how-to-create-obstacles-in-canvas), показывающий, как найти начальную точку столкновения. – markE
Если вы смотрите мою демоверсию, они когда-нибудь сталкиваются, когда они хорошо внутри друг друга? И я делаю свои проверки, прежде чем они перейдут к следующему кадру? Значит, они никогда не должны запыхаться? – Kiksen