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に自分自身の座標を渡すことで、衝突位置を取得することができます。