获取碰撞接触力

Gök*_*mir 4 c# unity-game-engine game-physics

有没有办法获得碰撞的接触力?我试图通过获取OnCollisionEnter()方法中的速度来做到这一点。但它在接触后提供速度,这对我没有用。

Ser*_*ite 8

绝对地!如果您查看 Unity 文档,则会发现一个方便的变量Collision.impulse. 这是最近才在Unity 5.2 中引入的,所以如果您还没有更新,请考虑这样做。(否则,您将被迫改用互联网上现已弃用的解决方案之一。)

根据文档,要获得施加的力,您只需将此值除以最后一帧的值Time.fixedDeltaTime(因为在物理学中,impulse = force * time):

void OnCollisionEnter(Collision col) {
    Vector3 collisionForce = col.impulse / Time.fixedDeltaTime;
    // And now you can use it for your calculations!
}
Run Code Online (Sandbox Code Playgroud)