スポンサーリンク

【Unity】衝突した座標を取得する方法

c#

Collisionの場合

using UnityEngine;

public class ColliderHitPoint : MonoBehaviour
{
    Vector3 _hitPos;

    //コリジョンの当たり判定
    private void OnCollisionEnter(Collision collision)
    {
        //collision.contactsに保存されている衝突情報を調べる
        foreach (ContactPoint hitPoint in collision.contacts)
        {
            _hitPos = hitPoint.point;   //衝突場所を取得
        }
    }
}

Collisionの場合は、衝突したポジションが、collision.contacts配列の中に格納されているので、1つずつ確認する必要があります。

Triggerの場合

using UnityEngine;

public class ColliderHitPoint : MonoBehaviour
{
    Vector3 _hitPos;

    //トリガーの当たり判定
    private void OnTriggerEnter(Collider other)
    {
        //自分自身のポジションに最も近い衝突座標を取得
        _hitPos = other.ClosestPointOnBounds(this.transform.position);
    }
}

Triggerの場合は、other.ClosestPointOnBoundsに自分自身の座標を渡すことで、衝突位置を取得することができます。

タイトルとURLをコピーしました