▶
【Unity連載】プレハブの使い方①(作成・複製)
▶
【Unity連載】プレハブの使い方②(編集)
▶
【Unity連載】BGM・SE(効果音)の付け方
▶
【Unity連載】uGUI(Scrollbar)の使い方を詳しく解説
▶
【Unity連載】uGUI(InputField)の使い方を詳しく解説
▶
【Unity連載】uGUIのCanvasとRenderModeについて詳しく解説
▶
【Unity連載】GetComponentを具体例付きで解説
▶
【Unity連載】GameObject.Findを具体例付きで解説
▶
【Unity連載】Instantiateを具体例付きで解説
はじめに知っておくべきTransformコンポーネントの概要
Transformコンポーネントは、各ゲームオブジェクトの「座標(Position)、傾き(Rotation)、サイズ(Size)」を管理するコンポーネントです。
ゲームオブジェクトごとに必ずもっているコンポーネントであり、他のコンポーネントのようにゲームオブジェクトから外すことはできません。
Unityエディタ上ではインスペクタービューにて編集することができます。各項目のパラメータはX軸、Y軸、Z軸ごとに値を持ち、数値はシーンビューと連動しているためハンドツールでゲームオブジェクトの位置やサイズを変更するとリアルタイムでインスペクタービューに反映されます。
Transformを扱う上で押さえておくべきポイントは、各項目の値はすべて親オブジェクトからの相対値として扱われる点です。
まずは親オブジェクトが存在しないケースから説明します。
ヒエラルキービューの直下に配置されたゲームオブジェクトであれば親オブジェクトは存在しない(ワールド自体が親となる)ため、位置(Position)の値はワールド座標の原点(0, 0, 0)からの距離を表します。Rotation(傾き)の値はワールド座標のXYZ軸からの角度となります。サイズ(Size)は特に基準はありませんが、直方体であれば辺の長さ、球体であれば直径となります。
次に親オブジェクトが存在する(ゲームオブジェクトが入れ子となる)ケースについてです。
まず理解すべき点は、子オブジェクトは親オブジェクトの値が変更された際に影響をうけるということです。例えば親オブジェクトサイズを2倍にすれば、子オブジェクトのサイズも2倍になります。しかし、このとき子オブジェクトのSizeの値に変動はありません。これは、子オブジェクトの値はあくまでも親オブジェクトに対する相対的な値として扱われるためです。そのため、子オブジェクトのPositionの値は親オブジェクトの座標からの距離を表します。Rotationは親オブジェクトの傾きを基準とした角度となります。Sizeは親オブジェクトと比べてのサイズ(2にすれば親の2倍、0.5なら半分の大きさ)となります。つまりいずれも親が基準となっているわけです。
上記の仕組みを知った上で実際にTransformの値を操作してみると、感覚的に理解できると思います。
またこちらはあまり知られていませんが、PositonやSizeの値の1は、「1メートル」として扱われます。これは物理演算を必要とするオブジェクトにおいては重要な要素となりますので覚えておくとよいでしょう。逆に見た目だけを調整するのであれば単位を気にする必要はありません。