UE4で格闘ゲームが作れるプログラムをアップデートしたので、そのプログラムや設定の解説をしていきます。
今回はその5ということで、スウェーとパリングについて説明します。
まずスウェーについては、ダメージ判定用コリジョンボックスのサイズと位置を変更して、上段と下段の攻撃を避けられるようにしています。
まずは、ダメージ用のコリジョンボックスを上下に分割しているので説明します。
「BP_Char01」のブループリントにて、従来のコリジョンボックス「Damage」のサイズと位置変更を行い、新たに「Damage_lower」を追加しています。
ダメージを受けた時の処理は、以前解説したその14と同じ処理を追加しています。
次に、スウェーはR2ボタンを押すことで発生し、PlayerControllerのイベント「Sway」で処理しています。
イベント「Sway」では変数”Begin Battle”を参照して、Trueであれば、変数”Press Button Sway”にTrueを代入し、R2ボタンが押されたことを識別できるようにしています。
次にマクロ「P01 Action Flag For P&K」でスウェーできる状態であることが確認できたら、関数「Delay」の処理後、変数”P01 in Air”でジャンプしていないことや立ちかしゃがみ状態であるかを確認して、変数”P01 Sway D”か”P01 Sway U”にTrueを代入しています。
変数”P01 Sway U”がTrueになると、アニメーションブループリントの「Char01_AnimBP」のTickに繋がった処理を開始します。
まずは、変数”P01 Hit Back”を参照し、ダメージを受けていないことが確認できたら、変数”Count Sway U”に1フレーム毎に1を加算して、スウェーしているフレーム時間をカウントします。
変数”Count Sway U”の値が18以下であれば、上段のスウェーのアニメーション再生と上半身のダメージボックスの形状と位置を変更して後ろへ下げており、さらに投げのダメージ判定を無効にしています。
スウェー中にダメージを受けた場合や変数”Count Sway U”の値が18以上になった場合は、関数「Delay」の処理の後、変数”P01 Sway D”へFalseを代入、変数”Count Sway U”へ0を代入し、上半身のダメージボックスの形状と位置や投げのダメージ判定を元へ戻し、カウンターのフラグをOFFに設定しています。
上段のスウェーのアニメーション再生がされると通知により、変数”P01 Open Counter”がTrueとなり、スウェー中にダメージを受けるとカウンターヒットとなります。
変数”P01 Sway D”がTrueになった場合は、投げのダメージ判定処理がないだけで、同様の処理となります。
それでは次にパリングの説明をします。
パリングはスウェー中に□や×ボタンを押すことで、相手の攻撃を避けながら、攻撃することができます。
立ち状態のパリングは、PlayerControllerのイベント「Punch_S」で処理しています。
PlayerControllerのイベント「Punch_S」では、まず、マクロ「P01 Kind of P-action」の処理が開始され、変数”Begin Battle”を参照して、Trueであれば、変数”Press Button P”にTrueを代入し、□ボタンが押されたことを識別できるようにしています。
さらに、マクロ「P01 Action Flag For P&K」でスウェー中であることが確認できたら、変数”P01 Begin to Attack”をTrueにするのと、関数「Delay」を処理してから、変数”P01 in Air”でジャンプしていないことを確認して、”P01 Sway U”にFalseを代入してスウェーを解除します。
□ボタンが押された最後の処理として、変数”P01 Kind of Attack”と”Where to Attack”に必要な値を代入しています。
次に、変数”P01 Begin to Attack”がTrueになると、アニメーションブループリントのイベント「P01_Attack-Animation」の処理を開始します。
□ボタンを押した時に、変数”P01 Kind of Attack”に22を代入しており、PlayMontageにより、指定したアニメーションが再生されます。
パリングのアニメーションが再生されると、通知により、カウンターのON/OFFや攻撃判定のON/OFFと攻撃状態のリセット処理を行います。
次に、パリングの攻撃判定の説明をします。
今回のアップデートで「BP_Char01」のブループリントにて、両手両足に、パリング攻撃用とダメージ用のコリジョンボックスとチャンネルの追加を行っています。
チャンネルの追加は、プロジェクト設定→コリジョンにて、今回は「Physics2ndCh」という名称のチャンネルを追加しています。
PlayerControllerの両手両足の攻撃判定を管理しているイベント「Setting_Attack-Box」では、通常攻撃した時に、パリングのダメージ用コリジョンボックスも有効にする処理を追加しています。
パリングの攻撃側も同様に攻撃用のコリジョンボックスを有効にしています。
次にパリングでダメージを受けた時の処理について説明します。
「BP_Char01」のブループリントで追加したパリングのダメージ用コリジョンボックスで、衝突開始の処理を追加しています。
マクロ「Judge of Damage PR」の処理内容は、以前に解説したその14と同じですが、1点だけ、イベント「On Damaged PR」の処理を追加しています。
このイベントは、PlayerControllerで、変数”P01 is Damaged PR”をTrueにすることで、パリングによるダメージであることがわかるようにしています。
さらに、ダメージを受けた時の処理をしている、イベント「Hit&Damage」の、②の部分で、カウンターヒットしたのかを確認しており、そこで、パリングによるダメージであるかも確認し、Trueであれば、カウンターヒットした時と同様の処理を行います。
下段のパリングも、ボタンが×ボタンになるだけで、同様の処理を追加しています。
今回の説明は以上で、アップデート内容は全て説明したことになります。
コメントを残す