【Unity】子オブジェクトの衝突を親オブジェクトで検知する

Oculus QuestでのVRアプリ制作にハマッています。いろんな意味で。
本日は衝突判定について、新たに知ることができたネタをご紹介します。
基本中の基本かも知れないけど。Oculus関係ないけど。

Oculus IntegrationのOVRGrabber

Oculus Integrationでは、手のアバターで物体をつかめるようにする機能が用意されています。それが掲題のOVRGrabberです。
これを手のオブジェクトにアタッチするわけなのですが、詳細な使い方はまた今度ご紹介するとして。

f:id:s44511173:20190912125900p:plain

このスクリプトをアタッチしたオブジェクトには、ご覧の通りColliderはアタッチされていません。Rigidbodyはありますけど。
では、コードを見てみましょう。

コード内では、OnTriggerEnterとOnTriggerExitが実装されています。
あれれ、Colliderを持っていないのにどうしてコールされるんだ??

親オブジェクトがRigidbodyを持つ場合、子オブジェクトの衝突も検知できる

ということらしい。
ためしにColliderなしのCubeを2個配置します。
それぞれに子オブジェクトを作成し、そちらにBoxColliderをアタッチして実験してみました。

f:id:s44511173:20190912131840g:plain

親にRigidbodyなし版。衝突してない感じ。

f:id:s44511173:20190912131835g:plain

親にRigidbodyあり版。衝突しています!!

結論

  1. 親オブジェクトにRigidbodyを付けることで、子オブジェクトの衝突を検知できる
  2. Oculusハマる。いろんな意味で。

 

 

 

↑↑↑ ぜひ遊んでみてください!↑↑↑