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がついている状態)で実行すると
![スクリーンショット 2019-05-14 16.30.03.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F360619%2F6c963c99-7e98-6b7c-ece7-d9e55f7542e0.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=c918510481c1a8febf2ceb0419781f96)
検知されませんね
##パターン2 親にRigidbodyをつけて実行する
というわけで、下の様に親の空のゲームオブジェクトにRigidbodyをつけて実行すると、(UseGravityは切って、動かない様にisKinematicをtrueにしてます)
![スクリーンショット 2019-05-14 16.34.27.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F360619%2F6529fbdc-cdec-05e7-6b62-251d23ac2459.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=2e5bc3529aeedef1d8f0e60ff0ef475c)
すると、
![スクリーンショット 2019-05-14 16.37.10.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F360619%2F96d54b7c-ece2-330e-29fb-665f54a7d5d1.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=5e914831c7e8586901647e9911ece808)
無事、コンソールに出力されました。
ということで、親にRigidbodyをつけていると、子のColliderの衝突検知もされるとのことです。
子の当たり判定が反応しない!という風に困っている方がいれば是非参考にしてください。