そこで、HTML5 キャンバスと JavaScript を使用して簡単な物理シミュレーションを作成しています。現実的な衝突を起こそうとしていますが、衝突が発生するたびに、コードが無限ループを開始し、ページがフリーズします。
Google Chrome 24.0.1312.32 ベータ版を使用しています
javascript コンソールを見ると、「console.log("I am Colliding with something")」という行がおかしくなり、毎秒何千回も出力され、ページが完全に壊れます。
なぜそれが起こっているのかよくわかりませんし、どうしたらいいのかわかりません。ヘルプやご意見をいただければ幸いです。
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;
}
}
}
}