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

今回は、関数「セレクトキャラクター」で最後に処理をしたカスタムイベント「Load BattleStage」から説明していきます。

カスタムイベント「Load BattleStage」では、処理を開始してから1.0秒後に、関数「セレクトキャラクター」で再生したアニメーションを逆再生して、画面から見えないようにしています。

次に、画面全体をを白くするアニメーションを再生してから0.5秒後に、変数”Begin Battle”をTrueにしています。

これは、以前説明した、関数「Get Input Value For P01」と 「Get Input Value For P02」で使用しており、Trueであれば、バトル中のポーズメニューの受付準備が可能になるのと、キャラクターブループリント「BP_Char01」のTickに繋がった処理で、アニメーションブループリントである「Char01_AnimBP」が設定されます。

それから、カスタムイベント「Destroy Actor」にてキャラクターセレクトで使用したキャラクターをDestroyしています。

その後、キャラクターセレクトで使用していたレベルファイル「Menu_Stage」のアンロードと非表示の処理をしてから、関数「Select Stage」で選択したステージのレベルファイル名を参照し、レベルファイルのロードと可視化処理を行っています。

それから、各PlayerのPlayerControllerである、”Controller Ref”と”Controller Ref02″ を使用して、カスタムイベントの「Spawn Fighter For Battle」を参照し、バトル用のキャラクターをスポーンする処理を開始するのと、BP_GlobalCameraで定義している変数”Start Camera For Battle”をTrueにして、バトル用のカメラ処理を有効にします。

それでは、BP_CommonControllerで定義しているカスタムイベント「 Spawn Fighter For Battle」を説明します。

カスタムイベント「 Spawn Fighter For Battle」では、マクロ「Controller ID Single」を使用して、どのPlayerのコントローラか判断しており、Player01用であれば、関数「Spawn Char For P01」の処理開始と、バトル中の入力許可処理をしており、 Player02用であれば、関数「Spawn Char For P02」の処理開始と関数内でバトル中の入力許可処理をしています。

では、先に関数「Spawn Char For P01」を説明します。

関数「Spawn Char For P01」では、バトルで使用するキャラクターの初期値を設定しますが、まずは関数「Select Character」で選択したキャラクターに応じた変数”P01 Char Num”の値を参照したSwitchノードを使用してキャラクターをスポーンしており、かつバトル開始時の位置を変数”P01 Battle Position”で設定しています。

次に前回記事のキャラクターブループリントで事前に設定した、CapsuleやCollision_Box、CharacterMovement等をBP_CommonControllerでも値を参照して変更できるように、 BP_CommonControllerで定義した変数に代入しています。

次に、HPの値やジャンプの初速を設定しています。

次に、前後の歩くスピードや前後のステップのスピードを設定しています。

次は、各攻撃のダメージ量やスタン値を設定しています。

最後に投げが成功したときに相手が後ろへ吹き飛ぶ時間を設定する変数”P01 Throw D-time”に値を指定した後、関数「Possess」にてPlayer01のPlayerControllerが制御するキャラクターを変数”P01″で指定します。

関数「Spawn Char For P02」は、ほぼP01と同様の処理となりますが、最後の部分だけ、CPUモードがあるので、変数”CPU Mode”を確認して、CPU専用のWait_timeの設定とPlayer02のバトル時の入力許可処理を行っています。

それでは、カスタムイベント「 Spawn Fighter For Battle」に戻り、関数「Spawn Char For P01」の後から説明します。

変数”Begin Process For Battle”をTrueに設定し、BP_CommonControllerのTickの処理が可能となり、その6.2秒後に変数”Begin Battle”がTrueになることで、バトル開始となってキャラクターの移動が可能になります。

さらに、CPUモードを選択している場合は、CPUキャラクターの行動許可を設定する変数”Allow CPU Action”もTrueに設定します。

これらの処理と同時に、Widgetブループリントのカスタムイベント「Load BattleStage」も処理されているので説明します。

BP_GlobalCameraのバトル用の準備を設定した後、バトルで使用するバックグラウンドミュージックを再生し、2.5秒後に画面を白くしていたアニメーションを逆再生し、ロードしたステージやスポーンしたキャラクターが、画面で見えるようにします。

次に、Player01と02に対して、メニュー上の入力許可を設定し、HPバーやゲージなどを画面に表示する「Start Battle」のアニメーションを再生します。

「Start Battle」のアニメーションを設定は次の通りです。

画面上部に表示する画像やゲージ等をすべて含んだキャンバス「Upper_Pannel」とPlayer01と02用のSPゲージを表示するキャンバス「SP_P01」と「SP_P02」をアニメーション効果Transformを使用して、画面外から画面内へ移動しています。

このアニメーション再生後の1.0秒後にRound1からFightまでの文字を表示するアニメーションと Round1の音声を再生し、その1.65秒後にFightの音声を再生します。

Round01からFightまでの文字を表示するアニメーションは次のようになっています。

“Round”と”1″と”Fight”が画像で登録されており、それぞれをアニメーション効果のColor and OpacityやTransformを使用して表示させています。

このアニメーション再生終了とFightの音声が再生される時に、先程説明した、BP_CommonControllerの変数”Begin Battle”がTrueとなって、キャラクターが行動可能となります。

以上で説明は終了です。

次回はバトル時のカメラコントロールを説明します。

コメントを残す

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

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