【Unity】子オブジェクトの衝突を親オブジェクトで検知する
Oculus QuestでのVRアプリ制作にハマッています。いろんな意味で。
本日は衝突判定について、新たに知ることができたネタをご紹介します。
基本中の基本かも知れないけど。Oculus関係ないけど。
Oculus IntegrationのOVRGrabber
Oculus Integrationでは、手のアバターで物体をつかめるようにする機能が用意されています。それが掲題のOVRGrabberです。
これを手のオブジェクトにアタッチするわけなのですが、詳細な使い方はまた今度ご紹介するとして。
このスクリプトをアタッチしたオブジェクトには、ご覧の通りColliderはアタッチされていません。Rigidbodyはありますけど。
では、コードを見てみましょう。
コード内では、OnTriggerEnterとOnTriggerExitが実装されています。
あれれ、Colliderを持っていないのにどうしてコールされるんだ??
親オブジェクトがRigidbodyを持つ場合、子オブジェクトの衝突も検知できる
ということらしい。
ためしにColliderなしのCubeを2個配置します。
それぞれに子オブジェクトを作成し、そちらにBoxColliderをアタッチして実験してみました。
親にRigidbodyなし版。衝突してない感じ。
親にRigidbodyあり版。衝突しています!!
結論
- 親オブジェクトにRigidbodyを付けることで、子オブジェクトの衝突を検知できる
- Oculusハマる。いろんな意味で。
↑↑↑ ぜひ遊んでみてください!↑↑↑