UE4初心者が頑張ってるブログ

Unreal Engine4を使用した開発メモ、及びそれに関連することについて不定期に書いています。

UE4 簡単な落下ダメージ処理を組む

落下ダメージには滞空時間で計算を行うものや、

落下距離で計算を行うものなど色々ありますが、

今回は落下速度で判定を行いたいと思います。

使用するバージョンはUE4 4.18.3です。

f:id:MozPaca:20180302110812p:plain

 

準備

まずはThird Person Shootingテンプレートからプロジェクトを作成しましょう。

f:id:MozPaca:20180302111019p:plain

 

落下ダメージがわかりやすいようにレベルを少し変更しています。

f:id:MozPaca:20180302111231p:plain

 

処理を組む

早速処理を組んでいきましょう。

Contents→ThirdPerson→ThirdPersonCharacterBPを開きます。

f:id:MozPaca:20180302112012p:plain

 

今回の処理の主役はGet Physics Linear Velocityノードです。

 

f:id:MozPaca:20180302111503p:plain

 

docs.unrealengine.com

 

ターゲットの速度を取得するノードです。

これを着地時に呼び、そのReturn ValueのZ値を計算に使用します。

 

処理の全体図としてはこのような感じになります。

f:id:MozPaca:20180302113312p:plain

 

順番に見ていきましょう。

まずEvent Tickから処理が流れ、

Character Movementの持つIsFallingがTrueかFalseかを調べます。

 

Falseに処理が流れた場合、地面にいる状態ですので

IsFallingがFalseになった一番最初(つまり着地)のときだけ処理を続けます。

 

逆にTrueの場合は空中にいることになるのでDoOnceをリセットしておきます。

f:id:MozPaca:20180302112240p:plain

 

着地時の処理がGet Physics Linear Velocityに流れてきました。

 

このときのZの速度が-999より大きい場合は

無事着地したということでダメージ処理はありません。

 

-1000より小さかった場合は落下速度の半分の値をダメージとして処理します。

(このあたりの計算はうまくやってください。)

f:id:MozPaca:20180302113301p:plain

 

完成です。

 

ダメージを受け取る

確認用にこんな感じで組んでみました。

f:id:MozPaca:20180302113533p:plain

 

確認してみる

低いところからの落下ではダメージはありませんが、

高いところからの落下はきちんとダメージが入っていると思います。

www.youtube.com

※-592.239502とダメージが入っています。