UE4 簡単な落下ダメージ処理を組む
落下ダメージには滞空時間で計算を行うものや、
落下距離で計算を行うものなど色々ありますが、
今回は落下速度で判定を行いたいと思います。
使用するバージョンはUE4 4.18.3です。
準備
まずはThird Person Shootingテンプレートからプロジェクトを作成しましょう。
落下ダメージがわかりやすいようにレベルを少し変更しています。
処理を組む
早速処理を組んでいきましょう。
Contents→ThirdPerson→ThirdPersonCharacterBPを開きます。
今回の処理の主役はGet Physics Linear Velocityノードです。
ターゲットの速度を取得するノードです。
これを着地時に呼び、そのReturn ValueのZ値を計算に使用します。
処理の全体図としてはこのような感じになります。
順番に見ていきましょう。
まずEvent Tickから処理が流れ、
Character Movementの持つIsFallingがTrueかFalseかを調べます。
Falseに処理が流れた場合、地面にいる状態ですので
IsFallingがFalseになった一番最初(つまり着地)のときだけ処理を続けます。
逆にTrueの場合は空中にいることになるのでDoOnceをリセットしておきます。
着地時の処理がGet Physics Linear Velocityに流れてきました。
このときのZの速度が-999より大きい場合は
無事着地したということでダメージ処理はありません。
-1000より小さかった場合は落下速度の半分の値をダメージとして処理します。
(このあたりの計算はうまくやってください。)
完成です。
ダメージを受け取る
確認用にこんな感じで組んでみました。
確認してみる
低いところからの落下ではダメージはありませんが、
高いところからの落下はきちんとダメージが入っていると思います。
※-592.239502とダメージが入っています。