【UE4】ダメージ処理【初心者】

ダメージ処理を実装しました。
アニメーションもつけています
以前作ったコンボ攻撃に、コリジョンの設定も組み込んでいます
完全初心者の人でもわかるように動画で丁寧に説明しています。
記事の最後で、知識の確認も出来るようにしていますので是非ご覧ください。

下準備

サードパーソンのテンプレートで作っています。
まず、キャラクターの武器にコリジョンを作成します。
ここでは以前自作した金属バットに[Capsule Collision]のコンポーネントを追加して、名前を[DamageTrigger]としています。

Game 35 1

ダメージ処理

ダメージを与える

Unreal Engineで用意されている[Apply Damage]のノードを使えば、簡単にダメージを与える処理をつくることができます

Game 35 2

ダメージを受ける

Unreal Engineで用意されている[Event Any Damage]のノードを使えば、ダメージを受けた際の処理を簡単に作ることができます
残りのHPが0より大きいときはダメージのアニメーション、0以下の時は死ぬ処理をカスタムイベントで続けています。

Game 35 3

アニメーション

ダメージを受けたときのアニメーションを流す処理です。ダメージを受けているときは入力を禁止しました。脚が動かないアニメーションなので、移動させたくないからです。
今のままだと、攻撃タイミングを調整すればはめられてしまいます。
移動禁止だけにして、攻撃や回避の動作ができるようにしても良いかもしれません。

Game 35 4

HPが0以下になったときの処理です。プレイヤーだった場合はリスタートするようにしています。
アニメーションが終わるタイミングはNotifyで切り替えました。[On Completed]だと、倒れた後に起き上がってしまうからです。
アニメーションを使わずに、ぐにゃっとするための処理も下に作っておきました。今回は使っていないです。

Game 35 5

👇アニメーションを使わず、ぐにゃっとする処理

コリジョンのON/OFF

初期値の設定

はじめにコリジョンをOFFにしておきます。

タイミングの設定

前回つくったコンボ攻撃のアニメーションに、Notifyを使ってタイミングを設定しました。

Game 35 6

状態の切り替え

ThirdPersonCharacterのBP

実行条件の設定

Branchで片方の処理しか書かないとき、個人的にTrueから返したいのだが、[NOR]には[Add pin]がなかったので断念。

切り替えの処理

[Weapon Change]という自作の関数を使用。
[Is In Battle]の値を[Battle Mode]中はTrueに、[Normal Mode]中はFalseにしています。

関数(Weapon Change)の中身

武器をつけるソケット、[Use Controller Rotation]、[Is In Battle]の値を設定できる。

Game 35 7

AnimBPのAnimGraph

[Is In Battle]の変数によって、使う[State Machine]を切り替えています。

Battle Mode

Normal Mode

Game 35 8

HPのデバッグ

Event Tickにつなぎ、PrintStringのDurationを0にすることで見やすくなります。
キャラクター名とHPを表示させています。

Child Blueprint

グレイマン(赤)のEventGraphです。[Third Person Character]の子供(Child Blueprint)として作りました。
イベント開始時に[Battle Mode]に切り替えて、あとはひたすらバットを振ります。
親で作ったカスタムイベントを使っています。
親でもEvent TickでHP表示の処理を書いていますが、ここでも同じ処理を書く必要があります。

Game 35 9

知識の確認

ダメージ処理

Apply Damage

Event Any Damage

Argument
発音άɚgjʊmənt(米国英語)
ノードの左側から入力される値。その値を使って、ノードの処理を実行する。

Return Value

ノードの右側から出力される値。その値を、その後の処理で使うことができる。

OR + NOT

なぜかピンの数が増やせない。ORは増やせる。

コリジョンのON/OFF

Set Collision Enabled

状態の切り替え

関数にしたいノードを複数選択して右クリック、[Collapse to Function]を選ぶ。
関数内の入力ピンを関数のノードにドラッグすることで、関数自体に入力ピンをつくることができる
関数に入れられないノードもある

Blend Poses by bool
Boolとは、TrueとFalseのみを入れられる変数のこと。その変数の値によってポーズを切り替えられる。

HPのデバッグ

Tickと繋ぎ、Durationを0にする。

Append
意味付加する
発音əpénd

Child Blueprint

子供をつくりたいBPを選んで右クリック、[Create Child Blueprint Class]を選択。

マテリアルを右クリックして、[Create Material Instance]を選択して作成。
ダブルクリックして編集画面に入り、Details パネルで変更する。
色違いのマテリアルを作るときなど、マテリアルインスタンスを使うと処理が軽くて済む

親のものを勝手に使うことができるが、親を変えることができない子供。

子供でEvent Tick の処理を作っていなければ、親と同じ処理が実行されます。ただ、子供に処理を設定したら、親で設定していた処理は実行されません

Twitterしてます

ブログの更新をお知らせ

コメント

タイトルとURLをコピーしました