1

我知道这很明显,但我在进行简单计算时遇到了一些麻烦。

我有一个对象,它具有 X 和 Y 分量的速度。我只是通过 X 和 Y 分量的平方根来计算它的总速度:

var totalSpeed:Number = Math.sqrt(b.currentSpeedY * b.currentSpeedY + b.currentSpeedX * b.currentSpeedX);

我还有一个名为 的变量divergence,它保证在 -1 和 1 之间。根据散度,我通过将散度和总速度相乘来计算碰撞后速度的新 X 分量:

var sX:Number =  -totalSpeed * divergence;

现在,由于我有了新的 X 速度和总速度,我只需通过从总速度中减去新 X 值的平方并取其平方根来获得新的 Y 速度:

var sY:Number = -Math.sqrt(totalSpeed - (sX * sX));

这是我的问题:计算前后的总速度不匹配。我可以通过打印碰撞前后的总速度(平方和的根)以及简单地直观地查看物体的速度来确认这一点。碰撞后,物体的速度总是趋于变慢。

我显然在某处遗漏了一些非常简单的东西,但不幸的是在任何地方都找不到。阻止总和匹配的错误在哪里?

4

1 回答 1

2

在 sy 计算中它应该是

var sY:Number = -Math.sqrt(totalSpeed * totalSpeed - (sX * sX));
于 2013-02-02T21:31:12.940 回答