我有这样的弹跳/碰撞球的动画和我目前正在调试的碰撞检测。 更精确地说,我试图阻止球从碰撞过程中相交。
我想停止动画的那一刻球发生碰撞,我能做到这一点,但如果我也想停止执行之前绘制球的碰撞,我需要首先吸引他们。
firstBall.move();
secondBall.move();
Ball.detectCollisions(balls); // execution stops here before the balls are drawn
firstBall.draw();
secondBall.draw();
所以,我画他们的碰撞函数内。 在函数结束时,我画了球,然后停止与执行debugger
。
Ball.detectCollisions = function () {
var debug = false;
balls.forEach(function(ball) {
ball.detectWallCollision();
});
for (var i = 0; i < balls.length; i++) {
for (var j = i + 1; j < balls.length; j++) {
if (balls[i].collidingWith(balls[j])) {
// balls[i].resoveCollision(balls[j]);
balls[i].xray = true;
balls[j].xray = true;
debug = true;
}
}
}
if (debug) {
balls.forEach(function(ball) {
ball.draw();
});
debugger;
// haltGodDammit();
}
};
但是,这是行不通的。 绘制碰撞球之前停止执行。
我碰到与巴特的答案 ,并用他的建议,称不存在的函数(造成的ReferenceError和停止执行),而不是使用debugger
和它的工作。 球执行的停止之前绘制。
为什么没有debugger
的工作? 我在想什么?