好的,这是官方网站上最难的 Unity3D 问题:
如果你在 Unity 中有两个对象,也许用手指拖动 A,当你与 B 碰撞时,
如今,Unity 明智地为您提供了 PhysX 决定在碰撞中应用于该项目的力。只需使用OnCollisionStay
...
Rigidbody rb;
void OnCollisionStay(Collision col)
{
if (rb.isKinematic) return;
if ( col.impulse.x != 0f || col.impulse.y != 0f )
Debug.Log(gameObject.name +" bashed, PhysX doing this .. "
+ col.impulse.x.ToString("f4") +" "
+ col.impulse.y.ToString("f4") +" "
+ col.impulse.z.ToString("f4") );
}
查看文档http://docs.unity3d.com/ScriptReference/Collision.html
值得的是.impulse
冲量 施加到此接触对以解决碰撞的总冲量。
伟大的。但。不幸的是,脉冲是在哪个坐标系中给出的,这完全是个谜。
试试看。真是疯了。它是相对于两个碰撞对象之间的方向(即在transform
and之间col.transform
)还是在某个局部空间中(哪个?)它可能是相对于.relativeVelocity
向量吗?
这到底是什么?这是愚蠢的。试试看。
看在上帝的份上,我希望在世界空间中简单地施加力量。
该文档没有任何信息,也没有人在讨论它。