目次
はじめに
注意
UE5.0.0の現在の情報です。
今後のアップデートによりUIや機能が変更される可能性があることをあらかじめご理解ください。
今回から状態異常を実装します。
仕様としては毒沼に入っている間毒状態が蓄積し、毒状態になっている間HPが減るようにします。毒沼外にいるときは毒の蓄積が減少します。
解説
①状態異常の定義します。
種類や区別などには列挙型を使います。
列挙型などは過去に記事を書きているのでそちらをお読みください。
コンテンツから列挙型、EN_AbnormalStateを作成します。
作成したものを開き列挙子を追加からPoisonを作成します。
②蓄積率などの情報を構造体に定義
状態異常の毒に関する内容の構造体を設定しておきます。
構造体を使うことで複数の変数を1つの構造体として制御できます。
コンテンツから構造体を作成し名前をDS_AbnormalStateInfoにします。
作成した構造体を開き画像のように変数と名前を付けます。
Category・・先ほどの状態異常の種類
DamageValue・・状態異常になったときのダメージ量
DamageInterval・・状態異常になったときのダメージ間隔
AccumulateValue・・状態異常の蓄積量
AccumulateInterval・・状態異常の蓄積間隔
③状態異常用のインターフェースを作成。
インターフェースを作成します。
名前をIF_AbnormalStateEventにします。
IF_AbnormalStateEventを開いてAbnormalStateStartとAbnormalStateEndを作成します。
また、それぞれのインプットには、状態異常の情報を渡すためDS_AbnormalStateInfoを設定します。
④抽象クラスの状態異常エリアのブループリントの作成と編集
いきなり抽象クラスという表現を使いましたが、抽象クラスとは曖昧なクラスのことです。果物に例えるとバナナやサクランボといったものは味や食感を持っています。つまりそれぞれ味や食感は継承先で設定して、どちらも持っている味や食感といった変数を定義するだけのクラスを抽象クラスといいます。
アクタを親にしたブループリントBP_AbnormalStateAriaを作成します。
コンポーネントBoxCollisionを追加しましょう。
状態異常っぽいアイコンにしておきましょう。
見た目で状態異常の範囲が分かるようにStaticMeshを追加しておきます。
適当なCubeを適応しておいて見た目だけなのでNoCollisionにしておきます。
BoxコンポーネントからStartとEndイベントを作成して、当たった対象が状態異常のインターフェースを所持しているか確認します。
ダメージエリアに入ったらインターフェース経由でイベントの呼び出しを行います。
構造体は継承先で変更できるように変数化しておきます。
⑤BP_ThirdPersonCharacterにインターフェースの適応
BP_ThirdPersonCharacterを開きます。
インターフェースを適応しておきます。
BP_AbnormalStateAriaを配置して実行してみましょう。
ログが出ていたら成功です。
最後に
UE4やUE5向けの記事を書いています。
皆様の応援が投稿のモチベーションになりますので
コメントやTwitterのフォローなどしていただけるとありがたいです。
それではよきゲーム開発を。