我知道这很明显,但我在进行简单计算时遇到了一些麻烦。
我有一个对象,它具有 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));
这是我的问题:计算前后的总速度不匹配。我可以通过打印碰撞前后的总速度(平方和的根)以及简单地直观地查看物体的速度来确认这一点。碰撞后,物体的速度总是趋于变慢。
我显然在某处遗漏了一些非常简单的东西,但不幸的是在任何地方都找不到。阻止总和匹配的错误在哪里?