Unityのオブジェクトの親子関係
Unityのゲームオブジェクトは親子関係を作ることが可能だ。親のゲームオブジェクトの位置・回転・大きさが変化すると子のゲームオブジェクトも影響を受けるようになる。ゲームオブジェクトやコンポーネントなどの用語がわからない場合、シーンビューの動かし方がわからない場合は以下の記事で確認するのがおすすめ。
ゲームオブジェクトとは
コンポーメントとは
シーンビューの操作
親子関係にするやり方やルールなどの詳細について紹介していく。
Unityのオブジェクトの親子関係目次
親子関係にするやり方・ルールワールド座標とローカル座標
目次にもどる
親子関係にするやり方・ルール
今回の説明ではCapsuleとSphereのゲームオブジェクトを使用して親子関係にする手順を説明する。例えば、シーンビューで以下のようにカプセル型のCapsuleの上に球型のSphereがくるように位置調整を行ってみよう。
その後、ヒエラルキー欄でSphereを選択しCapsuleへドラッグ&ドロップを行おう。
Capsuleが親、Sphereが子となり、親子関係になる(ちなみに子を親の外に持っていけば親子関係を解除可能)。
Capsuleを移動させてみよう。Sphereも追従して動くのを確認できる。
Capsuleを回転させてみよう。SphereもCapsuleの向いた角度に合わせて位置が変化する。
Capsuleを大きくしてみよう。Sphereもそれに合わせて大きくなる。
だが、子であるSphereを移動・回転・サイズ変更しても親であるCapsuleは影響を受けない。
子がいるゲームオブジェクトは以下の位置に三角マークがつく。三角マークを押すことで子を開いたり子を閉じたりすることができる。
また、1つの親に対し複数の子を作ったり、子を親として更に子を作るといったことも可能なので覚えておこう。
目次にもどる
ワールド座標とローカル座標
Unityのワールド座標は原点から見た座標である。原点とはX座標、Y座標、Z座標が(0,0,0)の位置を示す。ワールド座標と混同しがちなのがローカル座標である。これは親子関係を構築した際、子が親から見てどれだけ離れているかを示す座標である(子にとっては親が原点である)。
例えばゲームオブジェクトのcubeを作成した(当然親子関係はない)。適当に動かした後、cubeのインスペクターを見てみるとTransformのPosition(位置)は(1,2,2)であった。
親だったり親子関係にないゲームオブジェクトについてはTransformのPosition(位置)に出た数値がワールド座標である。原点からどれだけ離れているかがわかる。
一方で先ほど作成した親子関係のゲームオブジェクトのうち、子(Sphere)を選択してみる。子のインスペクターを見てみるとTransformのPosition(位置)は(0,2,0)であった。
子のゲームオブジェクトについてはTransformのPosition(位置)に出た数値がローカル座標である。親からどれだけ離れているかがわかる。
座標(位置つまりPosition)だけでなく、Transformの回転(Rotation)や大きさ(Scale)についてワールドとローカルが存在する。
ワールドとローカルはUnity初心者が勘違いしやすい要素なので、しっかり覚えておいてほしい。