JavaScript画布检查矩形是否包含矩形

JavaScript画布检查矩形是否包含矩形,javascript,canvas,Javascript,Canvas,我有两个数组。 例如: 有人知道怎么完成吗?或者还有别的办法? 我只能使用纯JavaScript 感谢您的帮助。以下是获得命中的如果条件: if ( (boxes[j].x < (coins[i].x + coins[i].width) && (boxes[j].x + boxes[j].width) > coins[i].x) && (boxes[j].y < (coins[i].y + coins[i].height) &a

我有两个数组。 例如:

有人知道怎么完成吗?或者还有别的办法? 我只能使用纯JavaScript


感谢您的帮助。

以下是获得命中的如果条件

if (
    (boxes[j].x < (coins[i].x + coins[i].width) &&  (boxes[j].x + boxes[j].width) > coins[i].x) &&
    (boxes[j].y < (coins[i].y + coins[i].height) &&  (boxes[j].y + boxes[j].height) > coins[i].y)
) {
    /* HIT - Do nothing */
} else {
    /* No Hit - Draw the coin */
}

以下是获得命中的if条件:

if (
    (boxes[j].x < (coins[i].x + coins[i].width) &&  (boxes[j].x + boxes[j].width) > coins[i].x) &&
    (boxes[j].y < (coins[i].y + coins[i].height) &&  (boxes[j].y + boxes[j].height) > coins[i].y)
) {
    /* HIT - Do nothing */
} else {
    /* No Hit - Draw the coin */
}

您的
for
循环都是不正确的。您需要初始化迭代器变量,比如
for(var k=0;k<30;k++)
-还需要使用
var
@Pointy oops正确声明它们,我的错误。但它只是在这里,在我的代码中有声明。我会在这里修复它。为什么你写
(10-4)
而不是
6
。还是我遗漏了什么?我试图在可视化编程环境中复制您的代码,但硬币和盒子似乎没有重叠。您的
for
循环都是不正确的。您需要初始化迭代器变量,比如
for(var k=0;k<30;k++)
-还需要使用
var
@Pointy oops正确声明它们,我的错误。但它只是在这里,在我的代码中有声明。我会在这里修复它。为什么你写
(10-4)
而不是
6
。还是我遗漏了什么?我试图在可视化编程环境中复制您的代码,但硬币和盒子似乎没有重叠。我认为您仍然需要一个条件,以确定一个盒子在另一个盒子内(一个盒子比另一个小)。你写的盒子碰撞代码和我写的不一样,这让我头疼。@asimes这个方法很简单。。。第一行>x/宽度验证,第二行y/高度验证。它不需要知道一个盒子是否比另一个小,因为它会分别测试每个盒子。因此,当
(b.x
时,它完全独立于盒子/硬币的大小。换言之,硬币比盒子小很重要,因为它可以放在盒子里。@asimes我理解你的例子,但我的例子仍然验证了这种情况。我把两件东西(真的)放在自己面前,我想尽办法试了试。你是对的,它确实有效,我想我只是惊讶于盒子碰撞可能这么短+1.我认为你仍然需要一个条件,当一个盒子在另一个盒子里时(一个盒子比另一个小)。你写的盒子碰撞代码和我写的不一样,这让我头疼。@asimes这个方法很简单。。。第一行>x/宽度验证,第二行y/高度验证。它不需要知道一个盒子是否比另一个小,因为它会分别测试每个盒子。因此,当
(b.x
时,它完全独立于盒子/硬币的大小。换言之,硬币比盒子小很重要,因为它可以放在盒子里。@asimes我理解你的例子,但我的例子仍然验证了这种情况。我把两件东西(真的)放在自己面前,我想尽办法试了试。你是对的,它确实有效,我想我只是惊讶于盒子碰撞可能这么短+1.
if (
    (boxes[j].x < (coins[i].x + coins[i].width) &&  (boxes[j].x + boxes[j].width) > coins[i].x) &&
    (boxes[j].y < (coins[i].y + coins[i].height) &&  (boxes[j].y + boxes[j].height) > coins[i].y)
) {
    /* HIT - Do nothing */
} else {
    /* No Hit - Draw the coin */
}
for (i = 0; i < coins.length; i++) {
    for (j = 0; j < boxes.length; j++) {