【问题标题】:How to preserve speed after collision in two dimensions如何在二维碰撞后保持速度
【发布时间】:2013-01-17 23:13:35
【问题描述】:

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

我有一个对象,它有 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));

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

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

【问题讨论】:

    标签: actionscript-3 math collision


    【解决方案1】:

    在 sY 计算中应该是

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

    【讨论】:

    • 是的,就是这样。我忘了重新乘以总速度,因为我在计算时已经对 x 和 y 值进行了平方。但我忘记了我也已经根深蒂固了。一个简单的错误,我几个小时都看不到。非常感谢:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多