使用環境
・Unity Editor:2021.3.18f1
この記事でわかること
- World(ワールド)とLocal(ローカル)の違い
- 各Transformプロパティ(position / rotation / scale)の使い方と注意点
- スクリプトによるTransform制御方法
- TransformPointやInverseTransformPointの使い方
UnityでTransformを正しく使うには?
ピッグダディ
今日は「UnityのTransformの使い方」について解説するよ。
移動や回転、スケーリングを扱うとき、Transformの理解は絶対に欠かせないんだ。
ピッグボーイ
でも、「position」と「localPosition」の違いとか、
最初めちゃくちゃ混乱しました。親子関係があると特にわかりにくくて。
ピッグガール
私はワールド座標とローカル座標の変換でつまづきました。
TransformPointとかInverseTransformPointって、
どういうときに使えばいいんですか?
ピッグダディ
うんうん、それぞれにちゃんと意味があるからね。
この記事では、Transformの基本からposition/rotationの使い分け、座標変換テクニックまで、スクリプト付きでわかりやすく解説していくよ!
World座標とLocal座標の違いとは?
Worldとは、シーンの基準となる点(0,0,0)からの絶対値のことです。
Localとは、親オブジェクトを基準とした基準系(相対値)のことです。
これらを適切に使い分けることで、複雑な階層構造やアニメーション、カメラ追従なども柔軟に制御できます。

WorldとLocalのスクリプト比較
操作 | ワールド | ローカル |
---|---|---|
移動 | transform.position | transform.localPosition |
回転 | transform.rotation | transform.localRotation |
拡縮 | transform.localScale |
移動(position / localPosition)
World座標での移動(絶対移動)
//ワールド全体の座標基準で動かす
transform.position = new Vector3(0, 1, 0);
Local座標での移動(相対移動)
// 親の座標を基準として動かす
transform.localPosition = new Vector3(0, 0, 1);
回転(rotation / localRotation)
World回転(絶対回転)
// オブジェクトを Y 軸(上向き)に 90° 回転
transform.rotation = Quaternion.Euler(0, 90, 0);
Local回転(相対回転)
// 親の向きを基準に Y 軸 90° 回転
transform.localRotation = Quaternion.Euler(0, 90, 0);
拡縮(localScale)
LocalScale:親の影響を受けたスケーリング
// 直接スケールを 2 倍にする(親の影響なし)
transform.localScale = new Vector3(2, 2, 2);
座標変換のテクニック
ローカル → ワールド:TransformPoint()
Vector3 worldPos = gameobject.transform.TransformPoint(gameobject.transform.localPosition);
ワールド → ローカル:InverseTransformPoint()
Vector3 localPos = gameobject.transform.parent.InverseTransformPoint(gameobject.transform.position);
まとめ
・position / rotationはワールド基準
・localPosition / localRotation / localScaleは親オブジェクト基準
・TransformPointでローカル座標をワールドに変換
・InverseTransformPointでワールド座標をローカルに変換
Transformを正しく理解すれば、思い通りにキャラクター・カメラ・UIの動きを制御できます。