【Unity連載】はじめに知っておくべきTransformコンポーネントの概要


はじめに知っておくべき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メートル」として扱われます。これは物理演算を必要とするオブジェクトにおいては重要な要素となりますので覚えておくとよいでしょう。逆に見た目だけを調整するのであれば単位を気にする必要はありません。

  • このエントリーをはてなブックマークに追加

PAGE TOP