衝突点
Unityでの衝突点の取得
オブジェクトの衝突を検出するには OnCollisionEnter、
トリガーに入ったかどうかは OnTriggerEnter で取得できます。
衝突位置の取得はそれぞれこんな感じ。
でも実はトリガーの時は大まかな位置しか取れてない。
エフェクトを表示するとかだけなら問題ないと思うけど
何か物理的な処理を正確に行いたい場合にはちょっとアレかもしれない。
ほかにいい方法あるのかなぁ。
code:cs
// コリジョンの場合
void OnCollisionEnter(Collision other){
Vector3 hitPos;
foreach(ContactPoint point in other.contacts){
hitPos = point.point;
point.normal; // 接触点の法線
}
}
// トリガーの場合(精度はよくない)
void OnTriggerEnter(Collider other){
Vector3 hitPos = other.ClosestPointOnBounds(this.transform.position);
}