OK、これは正式には、このサイトで最も難しい Unity3D の質問です。
Unity に 2 つのオブジェクトがある場合、おそらく 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") );
}
doco http://docs.unity3d.com/ScriptReference/Collision.htmlを見る
価値のあるものは.impulse
衝突を解決するためにこの接触ペアに適用される総衝撃。
偉大な。しかし。残念ながら、インパルスがどの座標系で与えられているかはまったく謎です。
試してみてください。それはナッツです。衝突する 2 つのオブジェクト間の方向 (つまり、transform
との間col.transform
) に相対的なのか、それとも局所空間内にあるのか (どの?).relativeVelocity
ベクトルに対して相対的なのか?
それは一体何ですか?それは愚かです。試してみてください。
善のために、力を単純にワールド空間に適用したいと思います。
ドキュメントには情報がなく、誰もそれについて議論していません。