目次
はじめに
注意
UE5.0.0の現在の情報です。
今後のアップデートによりUIや機能が変更される可能性があることをあらかじめご理解ください。
今回は落下死を実装します。
ワールド座標からキルする方法もありますが汎用性が高くなるように落下中の高さの移動量から判定するようにします。
※今後はクインさんがプレイヤーキャラクターなので_OLDのグレイマンは編集しません。
解説
①落下中かの判定
BP_ThirdPersonCharacterを開きます。
BeginPlayにシーケンスノードを追加してSetTimerbyEventを追加します。
ループにチェックを入れ0.1秒ごとにカスタムイベントを呼ぶようにします。
CharacterMovementからIsFallingを取得することで落下中かを判定しましょう。
CharacterMovementからは移動に関する情報を取得できます。
②落下開始位置のキャッシュ
落下直後のアクタの高さをキャッシュします。
DoOnceを接続してGetActorLocationのピンを分解します
変数FallStartLocationZを作成してセットします。
③着地イベントと落下距離の取得
着地したときに呼ばれるイベントOnLandedを配置します。
シーケンスノードからResetにつなげます。
LocationZから現在の位置を引きます。
試しにログを出してみましょう。
落下に応じて値が大きくなっていると思います。
逆に障害物に登ったりしたら値がマイナスになります。
変数にしておきましょう。
変数FallDistanceを作成してセットします。
④落下距離からダメージ量の設定
FallDamageMinDistanceを作成して落下ダメージが発生する最小距離を設定します。
今回は400にしました。
落下ダメージの値を設定します。
変数FallDamegeScaleを作成して0.15にセットします。
これで落下ダメージの補正がかかるようになりました。
装備などで落下耐性などを変更する場合はこのスケールを調整すればいいですね!
最後にApplyDamegeに接続します。
エレベーターで飛び降りてみてゲームにあった落下ダメージ量に調整してみてください。
+α 変数の整頓
ゲームを作ると発生するのが変数や関数の肥大化
視認性が下がるだけでなく、機能としてまとめておきたいものです。
カテゴリー機能を設定して肥大化した変数をまとめていきましょう。
変数を選択した状態で詳細を見るとカテゴリーという欄があります。
今回作成した変数は落下ダメージに関する変数なので、落下ダメージという名前を付けます。
すると変数に落下ダメージというカテゴリーに登録されます。
残りのFall~の変数もプルダウンもしくはカテゴリーへのドラッグアンドドロップで移動します。
このようにカテゴリー機能で機能別に変数をまとめることができます。また頻繁に利用する変数などはあえてカテゴリーに登録せずに置いておくとすぐ使えます。うまく利用して快適な環境を手に入れましょう。
※関数でも利用できます。
最後に
UE4やUE5向けの記事を書いています。
皆様の応援が投稿のモチベーションになりますので
コメントやTwitterのフォローなどしていただけるとありがたいです。
それではよきゲーム開発を。