【UE5】知っておくべきワールド座標とローカル座標について!【ゲーム開発】
Tutorial Get Actor Location, Get Actor Transform, Inverse Transform Location, Tutorial, UE, UE4, UE5, UnrealEngine, アンリアルエンジン, オブジェクト, ゲームプログラミング, ゲーム開発, チュートリアル, ローカル座標, ロジック構築, ワールド座標絶対座標とワールド座標の違いは、ゲーム開発において非常に重要な概念。
特に、UnrealEngineのような3Dエンジンでは、これらの座標を正しく理解し、使い分けることがゲームの動作や物体の配置に影響を与えます。
1.絶対座標(ローカル座標またはLocal Coordinete)
絶対座標、またはローカル座標とは、オブジェクトの親(親の座標系)を基準にした座標です。
つまり、そのオブジェクトが親オブジェクトに対してどの位置にあるかを示します。
・特徴
・親オブジェクトを基準に座標が決まる。
・親オブジェクトが動くと、子オブジェクトのローカル座標もそれに従って変動します。
・オブジェクトが親を持つ場合、その位置や回転は親座標系に依存します。
例)あるキャラクターが武器を持っている場合、その武器の位置はキャラクターのローカル座標で設定されます。
つまり、キャラクターが動くと、武器もキャラクターのローカル座標に基づいて移動します。
・使用シーン
・ キャラクターの装備や親子関係にあるオブジェクトの位置
・ オブジェクトを親オブジェクトの相対的な位置で移動させる場合
2.ワールド座標(World CoordinateまたはGlobal Coodinate)
ワールド座標とは、ゲームワールド全体の座標系を基準にした座標です。
ワールド座標系は、ゲーム内のすべてのオブジェクトに共通で、座標原点は、ワールド全体の中心や特定の基準点に設定されています。
・特徴
・グローバルな基準で、ゲーム全体の位置を示します。
・オブジェクトの親や階層構造に関係なく、ワールド全体の座標系に対して相対的な位置を持ちます。
・オブジェクトが移動する場合、その移動はワールド座標で示されます。
例)キャラクターが移動する場合、そのキャラクターの位置はワールド座標で示されます。
例えば、キャラクターが(100,200,0)のワールド座標に移動した場合、それはゲームワールド内での絶対的な位置です。
・使用シーン
・ゲーム内のオブジェクトがどこに配置されているか(ワールド空間内の絶対的な位置)
・他のオブジェクトと正確に位置を合わせて動かす場合
3.ローカル座標とワールド座標の変換
UE4/UE5では、ローカル座標とワールド座標を相互に変換するためのノードや関数が提供されています。
これにより、ある座標系の情報を別の座標系に変換することができます。
・Transfrom Location(ローカル→ワールド座標)
・ノード:Get Actor Location(ワールド座標)やGet Actor Transform(ローカル座標)
・説明:オブジェクトのローカル座標をワールド座標に変換する場合に使います。例えば、キャラクターが親オブジェクトを持つ場合、そのローカル座標を使って、ゲームワールド内での絶対的な位置を求めることができます。
・Inverse Transform Location(ワールド→ローカル座標)
・ノード:Inverse Transform Location
・説明:ワールド座標をローカル座標に変換するために使います。たとえば、ゲームオブジェクトのワールド座標を基に、そのオブジェクトの親オブジェクトに対する位置(ローカル座標)を計算することができます。
4.具体的な変換例
次に、ローカル座標とワールド座標を変換する具体的な例
例)ワールド座標とからローカル座標へ変換
シチュエーション:プレイヤーがあるオブジェクトに向かって移動するシーンを考えます。プレイヤーがいる場所はワールド座標で決まっていますが、オブジェクトに対する相対位置(ローカル座標)を計算したいとき。
1.プレイヤーの位置(ワールド座標)を取得
2.オブジェクトの位置(ワールド座標)を取得
3.Inverse Transform Locationを使い、プレイヤーの位置をオブジェクトのローカル座標系に変換
これで、オブジェクトに対するプレイヤーの相対的な位置(ローカル座標)が得られます。
例)ローカル座標からワールド座標へ変換
シチュエーション:あるオブジェクトが親オブジェクトに対して相対的な位置で設定されており、その相対位置をワールド空間での絶対的な位置に変換したい場合。
1.親オブジェクトの位置(ワールド座標)を取得
2.子オブジェクトのローカル座標(親オブジェクトに対する相対位置)を取得
3.Transform Locationを使って、子オブジェクトのローカル座標をワールド座標に変換
これでオブジェクトがワールド座標系でどこに配置されるかを計算することができます。
5.実際に使う場合
・キャラクターのアニメーション
キャラクターのボーンやアタッチメント(武器、アイテムなど)は、親ボーンや親オブジェクトに対してローカル座標で配置されています。これをワールド座標で管理することで、キャラクターがワールド空間内でどう動くかを把握できます。
・オブジェクトの配置
敵やアイテムなどのゲームオブジェクトを、プレイヤーキャラクターの近くや指定された座標に配置する際に、ローカル座標とワールド座標を使い分けて正確な位置を決定します。
まとめ
・ローカル座標はオブジェクトが親オブジェクトに対して相対的にどこに配置されているかを示す座標です。
・ワールド座標はゲーム全体での絶対的な位置を示す座標です。
・Unreal Engineでは、これらの座標を交互に変換するためのノード(Transform Location、Inverse Transform Locationなど)を使用することができます。
ローカル座標とワールド座標を正しく使い分けることで、ゲーム内のオブジェクトの位置を効率的に管理できるようになります。