アップデートのプログラム解説その3

UE4で格闘ゲームが作れるプログラムをアップデートしたので、そのプログラムや設定の解説をしていきます。

今回はその3ということで、追加した必殺技の説明をします。

まずは、このフラッシュストレートから説明します。

フラッシュストレートのコマンド入力を受け付けているのは、PlayerCotrollerのTickに繋がったノード「P01 Command02」で処理をしています。

まずは、変数”Player Side”を参照して、相手キャラクターの左右どちらにいるのか判定しており、Trueだった場合のフラッシュストレートのコマンドは、下、左下、左、パンチボタンとなるので、変数”Down Key”を参照し、方向キー下が入力されているのか確認します。

その後、 変数”Down Key” がTrueを維持した状態で、変数”Left Key”を参照し、方向キー左も入力されていることが確認できたら、ノード「Do Once」を使用して、変数”Command03″をTrueにし、下と左下のコマンド入力が成立したことにします。

ですが、その0.3秒後には関数「Delay」を使用して、変数”Command03″をFalseにしますので、 0.3秒後以内に次のコマンドを入力する必要があります。

次に方向キー左だけ、入力されている必要があるので、変数”Down Key”がFalseの場合で、変数”Command03″と”Left Key”がTrueであれば、ノード「Do Once」を使用して、変数”Command04″をTrueにし、下、左下、左のコマンド入力が成立します。

ただし、その0.3秒後には関数「Delay」を使用して、変数”Command04″をFalseにしますので、 0.3秒後以内に次のコマンドを入力する必要があります。

最後に、変数”Command04″がTrueの間に、変数”Press Button P”か変数”Press Button P_L”がTrueであれば、ノード「Do Once」を使用して、フラッシュストレートが成立する処理を行います。

この時、変数”Press Button P_L”がTrueの場合は、変数”FS_L”にTrueを代入して、フラッシュストレートの強であることを識別できるようにしています。

さらに、ノード「Do Once」処理後に、フラッシュストレートで移動する向きを識別する変数”FS Step Side”にTrueを代入します。

変数”Player Side”がFalseの場合は、変数”FS Step Side”もFalseになりますが、その後相手がジャンプで位置を入れ替えている場合もあるので、変数”Player Side”とは別の変数で管理しています。

また、変数”Player Side”がFalseだった場合のコマンドは、下、右下、右となり、使用する変数が違うだけで同様の処理となります。

その後は、空中にいるか、ダウンしているかなど、複数の変数を参照して、フラッシュストレートが使用可能な状況であるかを確認しており、すべてFalseであれば、変数”SM2 Flag”をTrueにします。

ただし、変数”P01 is Attacking”と”Enable to Cancel”、”P02 Hit back”がTrueだった場合は、キャンセル可能な攻撃が相手にヒットしており、かつ必殺技の入力も成立しているので、キャンセル必殺技が成立し、変数”Cancel to SM”をTrueにします。

変数”SM2 Flag”をTrueにした後、関数Delayを使用して、変数”P01 Kind of Attack”や”Where to Attack”に必要な値を代入しています。

関数Delayを使用しているのは、パンチボタンを押したときに、変数”P01 Kind of Attack”や”Where to Attack”に通常攻撃の値が代入されており、コマンド成立後に、必殺技用の値へ上書きするためです。

変数”SM2 Flag”がTrueになると、アニメーションブループリントのTickに繋がった処理で、変数”FS L”の値を参照して、弱か強かを判断し、フラッシュストレートのアニメーションを再生します。

それでは次に、フラッシュストレートのアニメーションについて説明します。

フラッシュストレートのアニメーションは、アニメーションモンタージュ「AM_SM」に登録しており、通知を以下のように設定しています。
・カウンターのON/OFFを設定する”On Counter”と”OFF Counter”
・攻撃判定のON/OFFを設定する”Begin_Attack”と”End_Attack”
・移動の処理とエフェクトのON/OFFを設定する”FS_Step-in”と”FS_Step-out”
・攻撃関連の変数を初期化する”OFF Anim”と”AT_Flag_off”

・カウンターのON/OFFを設定する”On Counter”と”OFF Counter”では、PlayerControllerのイベント「Open_Counter」と「Close_Counter」を使用して、変数”P01 Open Counter”のTrue/Falseを設定しています。

変数”P01 Open Counter”がTrueのときにダメージを受けるとカウンターヒットとなります。

・攻撃判定のON/OFFを設定する”Begin_Attack”と”End_Attack”では、PlayerControllerのイベント「Setting_Attack-Box On」と「Setting_Attack-Box Off」を使用して、手や足の衝突判定をON/OFFしています。

・移動の処理とエフェクトのON/OFFを設定する”FS_Step-in”と”FS_Step-out”では、PlayerControllerのイベント「SM_step-in」と「SM_step-out」を使用して、変数”FS Step”のTrue/Falseを設定しています。

変数”FS Step”がTrueになると、PlayerControllerのイベントグラフで移動速度を判定しているノードの処理が開始され、変数”FS Step Side”の値に応じて、キャラクターが移動します。

これは、キャラクターが前ステップしている処理と同様となりますので、以前の解説その11を参考にしてください。

格闘ゲームの作り方・プログラムの解説 その11

エフェクトのON/OFFについては、アニメーションブループリント「Char01_AnimBP」のTickに繋がっているノード「Gate」を使用しており、通知によって、GateのOpen/Closeを処理しています。

GateがOpenの間は、ダメージを受ける等、エフェクトを表示できる状態か確認した後、変数”Left Side”を参照して、キャラクターの向きに対応したエフェクトを表示します。

エフェクトの表示位置については、右手にソケットを追加しており、このソケットの位置を参照して設定しています。

・攻撃関連の変数を初期化する”OFF Anim”と”AT_Flag_off”では、PlayerControllerのイベント「Off_Attack_Anim」と「Setting_Attack-Flag_OFF」を使用して、攻撃アニメーションと状態をリセットする処理をしています。

次は、このフラッシュストレート(対空)について説明します。

フラッシュストレート(対空)のコマンド入力を受け付けているのは、PlayerCotrollerのTickに繋がったノード「P01 Command03」で処理をしています。

まずは、変数”Player Side”を参照して、相手キャラクターの左右どちらにいるのか判定しており、Trueだった場合のフラッシュストレート(対空)のコマンドは、右、下、右下、パンチボタンとなるので、変数”Right Key”を参照し、方向キー右が入力されているのか確認します。

その後、 ノード「Do Once」を使用して、変数”Command05″をTrueにし、右のコマンド入力が成立したことにしますが、その0.3秒後には関数「Delay」を使用して、変数”Command05″をFalseにしますので、 0.3秒後以内に次のコマンドを入力する必要があります。

次に方向キー下だけ、入力されている必要があるので、変数”Right Key”がFalseの場合で、変数”Command05″と”Down Key”がTrueであれば、ノード「Do Once」を使用して、変数”Command06″をTrueにし、右、下のコマンド入力が成立します。

ただし、その0.3秒後には関数「Delay」を使用して、変数”Command06″をFalseにしますので、 0.3秒後以内に次のコマンドを入力する必要があります。

最後に、変数”Command06″がTrueの間に、変数”Right Key”と”Down Key”がTrueで、変数”Press Button P”か変数”Press Button P_L”がTrueであれば、ノード「Do Once」を使用して、フラッシュストレート(対空)が成立する処理を行います。

この時、変数”Press Button P L”がTrueの場合は、変数”FStoA L”にTrueを代入して、フラッシュストレート(対空)の強であることを識別できるようにしています。

また、変数”Player Side”がFalseだった場合のコマンドは、左、下、左下となり、使用する変数が違うだけで同様の処理となります。

その後は、空中にいるか、ダウンしているかなど、複数の変数を参照して、フラッシュストレートが使用可能な状況であるかを確認しており、すべてFalseであれば、変数”SM3 Flag”をTrueにします。

ただし、変数”P01 is Attacking”と”Enable to Cancel”、”P02 Hit back”がTrueだった場合は、キャンセル可能な攻撃が相手にヒットしており、かつ必殺技の入力も成立しているので、キャンセル必殺技が成立し、変数”Cancel to SM”をTrueにします。

変数”SM3 Flag”がTrueになると、アニメーションブループリントのTickに繋がった処理で、変数”FStoA L”の値を参照して、弱か強かを判断し、フラッシュストレートのアニメーション(対空)を再生します。

次に、フラッシュストレート(対空)のアニメーションについては、先程と同様になりますが、エフェクトを表示している間、上半身を無敵に設定する処理を追加しているので説明します。

今回のアップデートで、手や足の攻撃に対するダメージボックスは上下に分割しており、PlayerControllerの変数”P01 D-box”と”P01 D-box_Low”として設定しています。

エフェクトを表示している間だけ、上半身のダメージ判定を無効にするので、アニメーションブループリント「Char01_AnimBP」の通知によって、PlayerControllerの変数”P01 D-box”のコリジョンオブジェクトタイプを無効と有効に変更しています。

それでは、最後にSPバーがフルチャージされた時に使用できるIceBallが、Fireballからのキャンセルに対応したので説明します。

IceBallのコマンド入力を受け付けているのは、PlayerCotrollerのTickに繋がったノード「P01 Command_SP」で処理をしています。

このノード内のコマンド入力が成立後の処理で、Fireballが有効もしくは、変数”P01 is Attacking”がTrueの場合で、かつ変数”Bullet Damaged”がTrueの場合は、変数”SP Flag”がTrueとなって、Fireballからのキャンセルに対応しています。

また、FireballからIceballへキャンセルする場合のコマンド入力は以下のようになっています。

今回の説明は以上です。

次回は、SPバーの仕様変更とガード中の反撃について説明します。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください