我知道这很明显,但我在计算过程中遇到了一些麻烦。
我有一个对象,它的速度有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));
这是我的问题:计算前后的总速度不匹配。我可以通过打印碰撞前后的总速度(平方和的根)以及通过直观地查看物体的速度来确认这一点。碰撞后,物体的速度总是趋于缓慢。
我显然在某处遗漏了一些非常简单的东西,但不幸的是在任何地方都找不到它。阻止总和匹配的错误在哪里?
答案 0 :(得分:2)
在skY计算中它应该是
var sY:Number = -Math.sqrt(totalSpeed * totalSpeed - (sX * sX));