Обычно для обнаружения столкновений в брезентовых играх я использую что-то вроде:Как обнаружить столкновения между быстро двигающимися объектами
function collides(a, b) {
return a.x < b.x + b.width &&
a.x + a.width > b.x &&
a.y < b.y + b.height &&
a.y + a.height > b.y;
}
Но это только обнаруживает столкновения, если объекты соприкасаются в то время, кадр обрабатывается. Если у меня есть спрайт, скорость которого (в пикселях/раме) больше ширины препятствия на его пути, он пройдет через препятствие без обнаружения столкновения.
Как я могу проверить, что находится между спрайтом и его пунктом назначения?
На каждом кадре проверьте, пересекается ли вектор с длиной спрайта с объектом. –
Возможно, вы захотите рассмотреть вопрос об этом на [GameDev.SE]. – zzzzBov
Связано также: http://stackoverflow.com/questions/7364884/problem-with-collision-detection-of-a-fast-moving-ball-with-a-racket-controlled – JayC