我遇到了一些碰撞检测问题;
我用来检查矩形是否与另一个矩形相交的函数是:
function box_col(ax1, ay1, ax2, ay2, bx1, by1, bx2, by2) {
return !((ax2 < bx1)||(ax1 > bx2)||(ay1 > by2)||(ay2 < by1));
}
出于某种原因,每当我在篱笆的边缘时,我都无法移动了。 如果我走到栅栏的顶部,但是不能向左或向右移动,我可以向后移动。
当我击中左侧,右侧和底侧时也是如此。 一旦我分别处于它的边缘,我就再也无法继续前进了。
http://i.stack.imgur.com/jzcp8.png - 屏幕截图
(红色块表示碰撞区域,因为我使用视图变量绘制到画布中)
我知道传递给box_col的所有x,y坐标都是正确的。
你可以看到我在围栏的顶端,但它不会让我向左或向右移动。 刚刚备份。 而且,当我在栅栏的左侧时,我无法在任何时期移动;它甚至不会让我向右移动。
我在网上搜索了很多,花了好几个小时试图找到正确的碰撞算法,但我显然还是没有得到它......
感谢任何帮助,谢谢。