ゲーム開発備忘録

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

【ゼロからアンリアルエンジン5】㉒キャラクターの死亡と復活

目次

 

はじめに

注意

UE5Preview2の現在の情報です。

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

 

解説

⓪前回記事の修正とお詫び

更新前の記事でMoveBackHPタイムラインの前にDelayノードを配置して対応しましたが、再度呼ばれても無視してしまうので意図した動作になりませんでした。

そのため画像のように実装のしなおしをお願いいたします。

実装不手際をお詫び申し上げます。

 

①HPが0になったら移動を無効化する

キャラクターが死亡しているのに移動できるのはおかしいので無効化していきます。

BP_ThirdPersonCharacterを開きましょう。

 

前回の記事で作成したタイムラインとDoOneceの間にシーケンスノードを入れます。

移動処理を無効化するノードと一定時間後に自身を破壊するノードを入れます。

 

SetLifeSpan

DelayノードとDestroyActorの組み合わせを一つにまとめたようなノード

 

実行してみるとカメラ操作はできますが移動を受け付けなくなりました。

 

②ゲームモードの作成

はじめの記事に紹介したようにゲームモードはゲーム上のルールを記述するところです。復活処理もルールに当たるのでここに記述していきたいと思います。

 

上のタブからゲームモード、BP_ThirdPersonGameModeを親としたゲームモードを作成して、名前をGM_Customにしておきます。

ゲームモードにGM_Customを割り当てておきましょう。

また、ワールドセッティングからも割り当てておきます。

 

③ゲームモードに復活処理の記述

プレイヤーが操作していたキャラクターが削除されると

プレイヤーコントローラーとキャラクターのつながりが切れてしまいます。

なのでいくらキャラクターを再生成してもプレイヤーコントローラーと接続しなおさなければキャラクターを操作することができません。

 

GM_Customを開き、新規イベント、RespawnCharacterを作成します。

 

次にPlayerStartの位置に再生成するノードを組みます。

 

FindPlayerStartはその名の通りマップ上のPlayerStartを取得します。

 

プレイヤーコントローラーに生成したキャラクターを接続しなおします。

 

④ディスパッチャーを使用してプレイヤーの死亡を取得する。

アクタ間の情報のやり取りでディスパッチャーという機能があります。

ディスパッチャーを使用すると別のアクタのイベントを監視して、それが動いたら自身のイベントを発生させることができる便利機能です。

 

今回はプレイヤーの死亡を監視してそれが動いたらリスポーンイベントを呼び出すようにします。

 

画像のようにプレイヤーが操作するキャラクターの死亡処理を監視します。

 

CreateEventをイベントからノードを出します。

 

署名にActorとあるのでRespawnCharacterイベントのインプットにActorを設定しておきます。

 

CreateEventの選択にRespawnCharacterを指定しましょう。

 

これでゲームが始まったら操作しているキャラの死亡通知を監視して死亡したらリスポーン処理が走るようになりました。

しかし、監視しているのは初回に生成されたキャラの死亡通知なので、新しく作成したキャラクターの死亡通知を監視していません。

つまり、2回目以降死亡してもRespawnCharacterイベントは呼ばれないのです。

 

それを防ぐには死亡監視対象を再生成したキャラクターに設定しなおす必要があります。

これで準備完了です。

実行して死亡後に初期位置に復活出来れば成功です

最後に

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

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

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

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