この記事について
この記事は私がゲーム制作・学習等で学んだ知識を元にTransformの使い方をわかりやすく説明していきます。
この記事でわかること
- World(ワールド)とLocal(ローカル)の違い
- Transformプロパティ(position / rotation / scale)の使い方と注意点
- スクリプトによるTransform制御方法
- TransformPointやInverseTransformPointの使い方
※Transformを使用するうえでVector3の知見は必ず必要になります。もし、まだ知見がない方は以下の記事を参考にしてください。
Transformとは?
Transform(トランスフォーム) は、Unityのすべての GameObject に必ず付いているコンポーネントで、オブジェクトの 位置(Position)・回転(Rotation)・拡縮(Scale) を管理します。
特徴
- Position(座標)
ワールド空間やローカル空間におけるオブジェクトの位置。 - Rotation(回転)
オブジェクトの向きを表す。EulerAngles(オイラー角)やQuaternion(クォータニオン)で制御可能。 - Scale(拡縮)
オブジェクトの大きさをX/Y/Z方向にどれだけ拡大・縮小するか。
World座標とLocal座標の違いとは?
Worldとは、シーンの基準となる点(0,0,0)からの絶対値のことです。
Localとは、親オブジェクトを基準とした基準系(相対値)のことです。
これらを適切に使い分けることで、複雑な階層構造やアニメーション、カメラ追従なども柔軟に制御できます。

インスペクターのTransform
Transformはインスペクターで確認・変更ができます。
※インスペクターで見えているTransformはすべてLocalです。World座標を表示するようにもできますが、結局理解しないといけないため、わざわざする必要はないかと思います。

Transformをスクリプトで制御
移動(position / localPosition)
transform.postionについては以下の記事を参考にしてください。
回転(rotation / localRotation)
transform.rotationについては以下の記事を参考にしてください。
※localRotaionはpositionやscaleと説明がかぶるため省略しています。
拡縮(localScale)
transform.localScaleについては以下の記事を参考にしてください。
座標変換のテクニック(Local ⇆ World)
Local → World:TransformPoint()
Vector3 worldPos = gameobject.transform.TransformPoint(gameobject.transform.localPosition);
World → Local:InverseTransformPoint()
Vector3 localPos = gameobject.transform.parent.InverseTransformPoint(gameobject.transform.position);
まとめ
・position / rotationはワールド基準
・localPosition / localRotation / localScaleはローカル基準
・TransformPointでローカル座標をワールドに変換
・InverseTransformPointでワールド座標をローカルに変換
Transformを正しく理解すれば、思い通りにキャラクター・カメラ・UIの動きを制御できます。