我在碰撞检测方面遇到了一些问题;
我用来检查一个矩形是否与另一个矩形相交的函数是:
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 坐标都是正确的。
你可以看到我在栅栏的顶部,但它不会让我向左或向右移动。只是备份。另外,当我在栅栏的左侧时,我根本无法移动;它甚至不会让我向右移动。
我已经在网上搜索了很多,并花了几个小时试图找到正确的碰撞算法,但我显然仍然不明白......
任何帮助表示赞赏,谢谢。