不使用JavaScript的冲突(包括屏幕截图和冲突功能)

不使用JavaScript的冲突(包括屏幕截图和冲突功能),javascript,collision-detection,Javascript,Collision Detection,我在碰撞检测方面遇到了一些问题 我用来检查一个矩形是否与另一个矩形相交的函数是: function box_col(ax1, ay1, ax2, ay2, bx1, by1, bx2, by2) { return !((ax2 < bx1)||(ax1 > bx2)||(ay1 > by2)||(ay2 < by1)); } function box_col(ax1、ay1、ax2、ay2、bx1、by1、bx2、by2){ 返回!((ax2bx2)|

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

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

function box_col(ax1, ay1, ax2, ay2, bx1, by1, bx2, by2) {
    return !((ax2 < bx1)||(ax1 > bx2)||(ay1 > by2)||(ay2 < by1));
    }
function box_col(ax1、ay1、ax2、ay2、bx1、by1、bx2、by2){
返回!((ax2bx2)| |(ay1>by2)| |(ay2
由于某种原因,每当我站在篱笆边缘时,我就再也不能动了。 但是,如果我走到围栏的顶部,我可以向上移动,但不能向左或向右移动

当我击中左侧、右侧和底部时也是如此。 一旦我分别站在它的边缘,我就不能再沿着它移动了

-截图

(红色块表示冲突区域,因为我使用视图变量绘制画布)

我知道传递给box_col的所有x,y坐标都是正确的

你可以看到我在篱笆的顶端,但它不允许我向左或向右移动。 退后。 而且,当我站在围栏的左侧时,我根本无法移动;它甚至不能让我向右移动

我在网上搜索了很多次,花了几个小时试图找到正确的碰撞算法,但我显然还是没有找到它


非常感谢您的帮助。

我认为您的交叉口逻辑是错误的。那里不应该有一些&&语句吗?如果两个框相交,那么这意味着x轴和y轴上发生了一些事情。这里缺乏逻辑。只要达到任何限制,函数就会返回
false
。因此,receiver函数认为所有进一步的移动都不应该执行……它必须执行,因为调用它的函数就是这样使用它的。调用box_col的脚本是:all在这里是一个关键字,您需要在receiver函数中检查给定移动的方向,如果方向在限制范围内,则允许它。它已经在创建的实例的step事件中这样做了。以下是检查其是否可以移动时的外观: