徒然エンジニアブログ

徒然エンジニアブログ

理系東大生がプログラミングを中心に様々なことについて情報発信していきます!

【Unity】ワールド座標とローカル座標の違い!

今回は初心者が混同しやすいワールド座標とローカル座標について説明したいと思います。

ワールド座標とは?

ワールド座標とはシーン上の(0,0,0)を中心にした座標のことです。
ただ単にシーン上にオブジェクトを置くとインスペクタ上に座標が書いてありますがこれはワールド座標です。

ローカル座標とは?

ローカル座標とは親オブジェクトからの相対位置のことです。


例えば親オブジェクトのワールド座標が(1,2,3)で子オブジェクトのワールド座標が(4,2,1)だったとします。
このとき子オブジェクトのローカル座標は(3,0,-2)となります。
ベクトルの引き算というわけですね。


また親を持たないオブジェクトの場合インスペクタ上に表示される座標はワールド座標ですが、子オブジェクトの場合ローカル座標が表示されます。

実際の例

以下のようにcubeのこオブジェクトとしてsphereを作った時を見てみましょう。
ヒエラルキーは下のようになります。
f:id:turedureengineer:20181229142428p:plain

この時親オブジェクトであるcubeの表示される座標はワールド座標で以下のようになります。
f:id:turedureengineer:20181229142529p:plain

これをみてわかる通りcubeのワールド座標は(1,0,0)です。
ではこの時の子オブジェクトを見てみましょう。
f:id:turedureengineer:20181229142957p:plain

先ほどでも言いましたがここでの(0,0,0)は親オブジェクトに対して(0,0,0)ということです。


つまり今回の例では子オブジェクトは親オブジェクトからずれていないということです。