所以我正在使用 HTML5 画布和 javascript 进行简单的物理模拟。我正在尝试进行一些真实的碰撞,但是每当发生碰撞时,代码就会开始无限循环并冻结页面。
我正在使用谷歌浏览器 24.0.1312.32 beta-m
当查看 javascript 控制台时,“console.log(“我正在与某物发生碰撞”)行变得疯狂,每秒打印数千次并完全破坏页面。
我不太确定它为什么会发生,我不知道该怎么做。任何帮助和/或输入将不胜感激。
for (i = 0; i <= 3; i++) {
if (collide(i)) {
console.log("I am colliding with something");
if (typeof getCollideIndx === 'undefined') {
console.log("collide index is not undefined");
if (!getCollideIndx(i)) {
console.log("Made it past null check");
//...update object based on collision
碰撞()函数是:
function collide(b) {
for (i = 0; i <= 3; i++) {
//Distance between each object
var distance = (Math.sqrt(Math.pow((balls[b].x - balls[i].x), 2) + Math.pow(balls[b].y - balls[i].y, 2)));
if (distance < 32) {
//must be less than 2*radius -- all radii are the same
//makes it so that it doesn't return true when checking its own index
if (!(balls[b].mass == balls[i].mass)) {
return true;
} else {
return false;
}
}
}
}