自分用Unityメモ:衝突位置を取得する(トリガーの場合も)

オブジェクトの衝突を検出するには OnCollisionEnter、
トリガーに入ったかどうかは OnTriggerEnter で取得できます。
衝突位置の取得はそれぞれこんな感じ。

でも実はトリガーの時は大まかな位置しか取れてない。
エフェクトを表示するとかだけなら問題ないと思うけど
何か物理的な処理を正確に行いたい場合にはちょっとアレかもしれない。
ほかにいい方法あるのかなぁ。


コリジョンの時

    void OnCollisionEnter(Collision other)
    {
        Vector3 hitPos;
        foreach (ContactPoint point in other.contacts)
        {
            hitPos = point.point;
        }

    }


・トリガーの時

    void OnTriggerEnter(Collider other)
    {
       
        Vector3 hitPos = other.ClosestPointOnBounds(this.transform.position);
       
    }