ゲーム開発備忘録

ゲームプログラマー UE4・5向けの記事を書いておりますので見ていただけるとありがたいです。

【ゼロからアンリアルエンジン5】㉚落下ダメージと落下死を実装してみよう。+ 変数や関数の整頓術

目次

 

はじめに

注意

UE5.0.0の現在の情報です。

今後のアップデートによりUIや機能が変更される可能性があることをあらかじめご理解ください。

f:id:namiton:20220408124324p:plain

 

今回は落下死を実装します。

ワールド座標からキルする方法もありますが汎用性が高くなるように落下中の高さの移動量から判定するようにします。

 

※今後はクインさんがプレイヤーキャラクターなので_OLDのグレイマンは編集しません。

解説

①落下中かの判定

BP_ThirdPersonCharacterを開きます。

BeginPlayにシーケンスノードを追加してSetTimerbyEventを追加します。

ループにチェックを入れ0.1秒ごとにカスタムイベントを呼ぶようにします。

CharacterMovementからIsFallingを取得することで落下中かを判定しましょう。

f:id:namiton:20220408112437p:plain

 

CharacterMovementからは移動に関する情報を取得できます。

f:id:namiton:20220408112731p:plain

 

②落下開始位置のキャッシュ

落下直後のアクタの高さをキャッシュします。

DoOnceを接続してGetActorLocationのピンを分解します

f:id:namiton:20220408114029p:plain

 

変数FallStartLocationZを作成してセットします。

f:id:namiton:20220408114046p:plain

 

③着地イベントと落下距離の取得

着地したときに呼ばれるイベントOnLandedを配置します。

f:id:namiton:20220408113829p:plain

シーケンスノードからResetにつなげます。

f:id:namiton:20220408114150p:plain

 

LocationZから現在の位置を引きます。

試しにログを出してみましょう。

f:id:namiton:20220408115202p:plain

 

落下に応じて値が大きくなっていると思います。

逆に障害物に登ったりしたら値がマイナスになります。

f:id:namiton:20220408115310p:plain



変数にしておきましょう。

変数FallDistanceを作成してセットします。

f:id:namiton:20220408115752p:plain

 

④落下距離からダメージ量の設定

FallDamageMinDistanceを作成して落下ダメージが発生する最小距離を設定します。

今回は400にしました。

f:id:namiton:20220408120128p:plain

 

落下ダメージの値を設定します。

変数FallDamegeScaleを作成して0.15にセットします。

これで落下ダメージの補正がかかるようになりました。

装備などで落下耐性などを変更する場合はこのスケールを調整すればいいですね!

f:id:namiton:20220408121531p:plain

 

最後にApplyDamegeに接続します。

f:id:namiton:20220408120858p:plain

エレベーターで飛び降りてみてゲームにあった落下ダメージ量に調整してみてください。

f:id:namiton:20220408121024p:plain

+α 変数の整頓

ゲームを作ると発生するのが変数や関数の肥大化

視認性が下がるだけでなく、機能としてまとめておきたいものです。

f:id:namiton:20220408124552p:plain

 

カテゴリー機能を設定して肥大化した変数をまとめていきましょう。

変数を選択した状態で詳細を見るとカテゴリーという欄があります。

 

今回作成した変数は落下ダメージに関する変数なので、落下ダメージという名前を付けます。

f:id:namiton:20220408124915p:plain

すると変数に落下ダメージというカテゴリーに登録されます。

残りのFall~の変数もプルダウンもしくはカテゴリーへのドラッグアンドドロップで移動します。

f:id:namiton:20220408125041p:plain

 

このようにカテゴリー機能で機能別に変数をまとめることができます。また頻繁に利用する変数などはあえてカテゴリーに登録せずに置いておくとすぐ使えます。うまく利用して快適な環境を手に入れましょう。

f:id:namiton:20220408125411p:plainf:id:namiton:20220408125354p:plain

※関数でも利用できます。

最後に

UE4やUE5向けの記事を書いています。

皆様の応援が投稿のモチベーションになりますので

コメントやTwitterのフォローなどしていただけるとありがたいです。

それではよきゲーム開発を。