はじめに
アクターの回転を考慮して特定のアクターから別のアクターへの方向ベクトルを計算する方法について解説します。
Blueprintによる具体的な実装
1. アクターの位置を取得する
- 任意のイベントで2つのアクターのワールド位置を取得します。
GetActorLocation(Target: Actor1) // 出発点のアクター
GetActorLocation(Target: Actor2) // 目的地のアクター
2. アクターのローカル空間に変換する
- Actor2のワールド位置をActor1のローカル空間に変換します。
GetActorTransform(Target: Actor1);
InverseTransformLocation(Transform: Actor1 Transform, Location: Actor2 Location)
3. 方向ベクトルを計算する
- 変換されたローカル空間の位置から方向ベクトルを計算します。
Vector Subtract (InversedTransform - Actor1 Location)
まとめ
InverseTransformLocationでActor2をActor1のローカル空間に変換することで、Actor1の回転などの影響を受けずに特定のアクターから別のアクターへの方向ベクトルを計算することができます。また、ローカル空間に持っていくことでローカルのForwardベクトルを固定することができるので、forwardベクトルが(1,0,0)の場合、奥行きX軸の情報を削って、奥行きなしのVector(Y, Z)なども取得することができます。