gpt4 book ai didi

javascript - 厄运的碰撞循环

转载 作者:行者123 更新时间:2023-11-30 05:39:29 26 4
gpt4 key购买 nike

我正在为我正在进行的项目使用 Fabric 和 JS。 Fabric 将 Canvas 中的对象建模为数组。

我有一个碰撞检测方法,它遍历 Canvas 数组并确定何时检测到与新对象的碰撞。检测是功能性的和工作的。我基本上在他的屏幕上有 5 个方 block ,另一个在向下的路径上。当它接触到它们时,它们会改变颜色。

我正在将它接触到的每个 block 的名称打印到控制台和屏幕上。我想要的是它显示最近被触摸的 block 。

问题是总是漏掉一个 block 。如果命名者是颜色,例如:

Red
Green
Blue
Pink
Yellow

输出始终是 R、G、B、Y - 偶尔漏掉的那个会改变,通常是粉色或蓝色。

我使用的代码是:

function detectCollision(target) {

target.setCoords();

canvas.forEachObject(function(obj) {
obj.setCoords();
if (obj === target) return;
if (obj != target && target.intersectsWithObject(obj)){

obj.opacity = 0.5;
console.log("Collision with Obj: " +obj.label);
return obj;
}else{
obj.opacity = 1;
}
});
}

我看到“was”是因为我尝试了各种其他方法,例如使用 while 循环以及使用数组,以便在触摸对象时将其添加到数组中,然后对其执行检查,但是还是一样的结果。

这非常令人沮丧,我根本看不出问题出在哪里。非常感谢任何帮助。谢谢。

最佳答案

对于碰巧遇到这个的任何人:

问题不在于循环、数组或任何方法。被遗漏的 block 在另一个 block 下面一个像素左右,相交方法没有对此进行检查,因此被跳过了。由于我对它们的顺序所做的更改,被遗漏的 block 不时发生变化。

关于javascript - 厄运的碰撞循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21588650/

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