gpt4 book ai didi

JavaScript Canvas 检查矩形是否包含矩形

转载 作者:行者123 更新时间:2023-11-28 20:21:04 25 4
gpt4 key购买 nike

我有两个带有对象的数组。示例:

var boxes = [],
coins = [],
k = 0;

boxes.push({
x: 300,
y: 350,
width: 500,
height: 500
});

for (k; k < 30; k++) {
coins.push({
x: Math.floor(Math.random() * (10 - 4) + 4) * 100,
y: Math.floor(Math.random() * (4 - 1) + 1) * 100,
width:25,
height:25
});
}

之后我使用 for 来绘制这些东西。问题是有时硬币会被抽到盒子里。如何检查硬币是否在盒子范围内?我正在考虑计算方形盒子和硬币,但我不知道如何完成。

var i = 0,
j = 0;

for (i; i < coins.length; i++) {
for (j; j < boxes.length; j++) {

if (boxes[j].x + boxes[j].width /* something */ coins[i].x + coins[i].width && boxes[j].y + boxes[j].height /* something */ coins[i].y + coins[i].height) {
/* do nothing */
} else {
ctx.fillRect(coins[i].x, coins[i].y, coins[i].width, coins[i].height);
}

}
}

有人知道如何完成吗?或者也许还有其他方法吗?我只能使用纯 JavaScript。

感谢您的帮助。

最佳答案

这是获得命中的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 循环中重新设置 ij var,您应该在至少要使用第二个循环(j),否则循环将不起作用。

for (i = 0; i < coins.length; i++) {
for (j = 0; j < boxes.length; j++) {

关于JavaScript Canvas 检查矩形是否包含矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18317195/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com