不使用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事件中这样做了。以下是检查其是否可以移动时的外观: