Actionscript 3 如何在二维碰撞后保持速度

Actionscript 3 如何在二维碰撞后保持速度,actionscript-3,math,collision,Actionscript 3,Math,Collision,我知道这很明显,但我在简单的计算中遇到了一些麻烦 我有一个物体,它的速度有X和Y分量。 我只是通过X和Y分量的平方根来计算它的总速度: var totalSpeed:Number = Math.sqrt(b.currentSpeedY * b.currentSpeedY + b.currentSpeedX * b.currentSpeedX); 我还有一个名为散度的变量,它保证介于-1和1之间。根据散度,我将散度和总速度相乘,计算出碰撞后速度的新X分量: var sX:Number = -t

我知道这很明显,但我在简单的计算中遇到了一些麻烦

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

var totalSpeed:Number = Math.sqrt(b.currentSpeedY * b.currentSpeedY + b.currentSpeedX * b.currentSpeedX);
我还有一个名为
散度
的变量,它保证介于-1和1之间。根据散度,我将散度和总速度相乘,计算出碰撞后速度的新X分量:

var sX:Number =  -totalSpeed * divergence;
现在,由于我有了新的X速度和总速度,我只需从总速度中减去新的X值的平方,并取其平方根,即可得到新的Y速度:

var sY:Number = -Math.sqrt(totalSpeed - (sX * sX));
我的问题是:计算前后的总速度不匹配。我可以通过打印碰撞前后的总速度(平方和的根)和直观地观察物体的速度来确认这一点。碰撞后,对象的速度总是趋于较慢


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

在sY Calculation中,应该是

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

是的,就是这样。我忘了重新乘以totalSpeed,因为我在计算时已经将x和y值平方了。但我忘了我也找到了根源。一个简单的错误,我几个小时都看不见。非常感谢:)