Javascript 命中检测问题

Javascript 命中检测问题,javascript,processing.js,Javascript,Processing.js,我不明白为什么这个命中检测不起作用。我尝试更改>、宽度/高度值,但没有效果。我在检测中放置了一个println()函数,以确保检测中的函数不起作用 代码: for(var b=0;b粒子[b][3]&粒子[a][3]-10粒子[b][4]&粒子[a][4]+10

我不明白为什么这个命中检测不起作用。我尝试更改>、宽度/高度值,但没有效果。我在检测中放置了一个println()函数,以确保检测中的函数不起作用

代码:

for(var b=0;b粒子[b][3]&粒子[a][3]-10<粒子[b][3]&粒子[a][4]+10>粒子[b][4]&粒子[a][4]+10<粒子[b][4]){
var-temp=粒子[a][5];
粒子[a][5]=粒子[b][5];
粒子[b][5]=温度;
println(“hi”);
}
}
这个项目的背景故事再多一点。基本上,我有一个带有点列表(“粒子”)的数组,我希望它们有一个命中检测系统,这样它们就会相互反弹,朝相反的方向前进

任何帮助都将不胜感激


最终工作代码:

for(var b = 0; b < particles.length; b++) {
    if(a !== b && particles[a][3] > particles[b][3]-10 && particles[a][3] < particles[b][3]+10 && particles[a][4] > particles[b][4]-10 && particles[a][4] < particles[b][4]+10) {
        var temp = particles[a][5];
        particles[a][5] = particles[b][5];
        particles[b][5] = temp;
        println("hi");
    }
 }
for(var b=0;bparticles[b][3]-10&&particles[a][3]particles[b][4]-10&&particles[a][4]
首先,
粒子[a]==particles[b]
的意思是,只有当
a==b

其次,当
particles[a]===particles[b]
增加b时,for循环再次增加b。。。意味着你错过了一个粒子

试试这个:

for(var b = 0; b < particles.length; b++) {
    if(a === b) {
        continue;    
    } else if(particles[a][3]+10 > particles[b][3] && particles[a][3]-10 < particles[b][3] && particles[a][4]+10 > particles[b][4] && particles[a][4]+10 < particles[b][4]) {
        var temp = particles[a][5];
        particles[a][5] = particles[b][5];
        particles[b][5] = temp;
        println("hi");
     }
}
for(var b=0;b粒子[b][3]&粒子[a][3]-10<粒子[b][3]&粒子[a][4]+10>粒子[b][4]&粒子[a][4]+10<粒子[b][4]){
var-temp=粒子[a][5];
粒子[a][5]=粒子[b][5];
粒子[b][5]=温度;
println(“hi”);
}
}
甚至

for(var b = 0; b < particles.length; b++) {
    if (a !== b && particles[a][3]+10 > particles[b][3] && particles[a][3]-10 < particles[b][3] && particles[a][4]+10 > particles[b][4] && particles[a][4]+10 < particles[b][4]) {
        var temp = particles[a][5];
        particles[a][5] = particles[b][5];
        particles[b][5] = temp;
        println("hi");
     }
}
for(var b=0;bparticles[b][3]&&particles[a][3]&&particles[a][4]+10>particles[b][4]&&particles[a][4]+10
@ScottMarcus的可能重复,该帖子没有帮助。我理解碰撞是如何工作的,但由于某种原因,这一次尤其不理解。另外,这篇文章包含了很多jquery答案(我没有使用)。在代码中是否定义了
println
?如果没有,这将抛出一个错误。该页面上有许多指向资源的链接,这些资源显示了使用纯JS完成的各种技术。@Dom println()是一个processing.JS库函数,类似于console.log()或alert()调试。仍然没有得到结果。我试着将宽度/高度增加到100,但仍然没有得到任何结果。刚刚重新检查过我也调用了正确的数组。。。
for(var b = 0; b < particles.length; b++) {
    if (a !== b && particles[a][3]+10 > particles[b][3] && particles[a][3]-10 < particles[b][3] && particles[a][4]+10 > particles[b][4] && particles[a][4]+10 < particles[b][4]) {
        var temp = particles[a][5];
        particles[a][5] = particles[b][5];
        particles[b][5] = temp;
        println("hi");
     }
}