Unityにおいて、子オブジェクトの衝突が検知されるパターンと検知されないパターンが少しだけややこしかったのでメモ程度に残しておきます。初歩的な内容になっています。
##検証準備
親のゲームオブジェクトの方に以下のスクリプト(CollisionCheck.cs)をつけて衝突判定の有無を調べる
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CollisionCheck : MonoBehaviour
{
private void OnCollisionEnter(Collision col){
Debug.Log("当たったよ");
}
}
##パターン1 この状態で実行してみる
この状態(親はスクリプトのみがついていて、子にColliderがついている状態)で実行すると
検知されませんね
##パターン2 親にRigidbodyをつけて実行する
というわけで、下の様に親の空のゲームオブジェクトにRigidbodyをつけて実行すると、(UseGravityは切って、動かない様にisKinematicをtrueにしてます)
すると、
無事、コンソールに出力されました。
ということで、親にRigidbodyをつけていると、子のColliderの衝突検知もされるとのことです。
子の当たり判定が反応しない!という風に困っている方がいれば是非参考にしてください。