1

我在碰撞检测方面遇到了一些问题;

我用来检查一个矩形是否与另一个矩形相交的函数是:

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 坐标都是正确的。

你可以看到我在栅栏的顶部,但它不会让我向左或向右移动。只是备份。另外,当我在栅栏的左侧时,我根本无法移动;它甚至不会让我向右移动。

我已经在网上搜索了很多,并花了几个小时试图找到正确的碰撞算法,但我显然仍然不明白......

任何帮助表示赞赏,谢谢。

4

0 回答 0