PaperSloth’s diary

主にゲーム開発関連についての記事を書きます。

UE4 Actor間の距離の取得について

環境

UE4.20.3

距離の計算方法

数学的な計算方法は調べれば沢山出てくるので割愛してUE4での使い方の話をします。

C++側であれば下記のように求め

const float Distance = (GetActorLocation() - PlayerPawn->GetActorLocation()).Size();

Blueprintでは下記のように求めているという例をよく目にします。
f:id:PaperSloth:20181213154410p:plain
例えば敵とPlayerの距離とかアイテムとプレイヤーの距離とかですね。

Get ** Distance To

今回は分かりやすい例として何かしらのActorとプレイヤーの距離を求めるというケースです。

先程の計算をわざわざ書かなくともUE4.0の頃からActor内に便利な関数が複数用意されています。

GetDistanceTo

Actor間の距離を取得する便利関数です。
最初の例で書いたものと同様の結果を得ることができます。
f:id:PaperSloth:20181213155527p:plain

GetHorizontalDistanceTo

高さ(Z軸方向)を無視した距離を取得することができます。
平面での距離の取得なので、俯瞰視点のゲームやレーダーに使えそうですね。
f:id:PaperSloth:20181213155827p:plain

GetVerticalDistanceTo

先程と逆で高さ(Z軸方向)の距離のみを取得することができます。
float - floatなので一番計算コストが低いですね。
f:id:PaperSloth:20181213160005p:plain

GetSquaredDistanceTo

この関数だけはUE4.11から追加されたものです。
この関数ではベクトルの2乗の長さを取得します。
f:id:PaperSloth:20181213161353p:plain


意外と知られていないノードがたくさんあると思うので、気が付いたらいろんな人がシェアしてくれると嬉しいです。