今回はその3ということで、3on3のバトル前の準備について説明します。
キャラクターセレクトが終了すると、Widget_Blueprintのカスタムイベント「Load_BattleStage」の処理が開始され、ノードDelayにより1.0秒間待ってから、Player02が選択したキャラクターの選択禁止マークを非表示にしています。
![](https://fighting-games-build-and-play.com/wp-content/uploads/2020/08/image01-1-1024x440.png)
さらに、Player01と02のキャラクター名称をフレームアウトするアニメーション処理と、画面を白くするアニメーションが再生されます。
![](https://fighting-games-build-and-play.com/wp-content/uploads/2020/08/image02-1-1024x361.png)
その後、ノードDelayにより0.5秒間待ってから、変数”Begin Batlle”にTrueを設定し、Player01のBP_CommonControllerの変数”Fighting-mode”の値を参照して、キャラクターセレクトで使用した6人のキャラクターを全てDestroyしています。
![](https://fighting-games-build-and-play.com/wp-content/uploads/2020/08/image03-1-1024x204.png)
それから、メニュー選択で使用していたレベルのアンロードとバトルで使用するレベルのロードを行ったら、Player01と02で使用するキャラクターのスポーンを行います。
![](https://fighting-games-build-and-play.com/wp-content/uploads/2020/08/image04-1-1024x283.png)
キャラクターのスポーンについては、後ほど説明します。
キャラクターのスポーン後は、BP_GlobalCameraの変数”Start Camera For Battle”にTrueを設定後、バトルミュージックの再生や画面を白から戻す処理とラウンドコールを行っています。
![](https://fighting-games-build-and-play.com/wp-content/uploads/2020/08/image05-1-1024x283.png)
![](https://fighting-games-build-and-play.com/wp-content/uploads/2020/08/image06-2-1024x195.png)
それでは、キャラクターのスポーンについて説明します。
![](https://fighting-games-build-and-play.com/wp-content/uploads/2020/08/image07-1-1024x609.png)
まずは、マクロController IDによって、Player01かを確認後、変数”Fighting-mode”により、今回は”1″の場合が処理されます。
![](https://fighting-games-build-and-play.com/wp-content/uploads/2020/08/image08-1-1024x703.png)
そして、カスタムイベント「Spawn Char For P01-1」を含めた3人分のキャラクタースポーンが処理されます。
![](https://fighting-games-build-and-play.com/wp-content/uploads/2020/08/image09-1-1024x217.png)
キャラクタースポーンでは、スポーンする場所を指定後に、変数”P01-1 Char Num”により、Player01が1番目に選択したキャラクターを特定しています。
![](https://fighting-games-build-and-play.com/wp-content/uploads/2020/08/image10-1-1024x501.png)
その後は、ノードSpawnActorにより指定したClassのキャラクターがスポーンされ、キャラクターブループリントの変数”Order Of Char”とBP_CommonControllerの変数”P01-1 Number Of Char”に1を設定しています。
BP_CommonControllerの変数”P01-1 Number Of Char”については、Player01が1番目に選択したキャラクターを特定する変数で、バトル中のアシストを使用するときに、参照します。
![](https://fighting-games-build-and-play.com/wp-content/uploads/2020/08/image11-1-1024x204.png)
もう一つのキャラクターブループリントの変数”Order Of Char”については、3人のキャラクターの順番から、Playerが操作しているキャラクターなのかを特定する変数です。
![](https://fighting-games-build-and-play.com/wp-content/uploads/2020/08/image12-1.png)
表示したExcelの赤枠内は、3人のキャラクターの順番を示しており、バトル開始時は、1、2、3となります。
このときExcelでPrimaryと表示している行は、操作しているキャラクターとなり、残りの2人は、サブキャラクターとなります。
バトル中は、キャラクターチェンジにより、赤枠内で表示された6種類の順番があり、キャラクターブループリントの変数”Order Of Char”は、自分がPrimaryかSubかを判断するのに使用しているため、白いマネキンの場合は、”1″であれば、Primaryであり、その他はSubとなります。
また、今回の説明には登場していない、BP_CommonControllerの変数”P01 order of char”は6種類の順番を詳細に特定することができます。
このキャラクターブループリントの変数”Order Of Char”が、PrimaryかSubかを判断しているのは、Capsule_componentのCollision判定で使用しており、これは別の動画で説明します。
![](https://fighting-games-build-and-play.com/wp-content/uploads/2020/08/image13-1-1024x735.png)
キャラクターの順番を特定した後は、キャラクターの各コンポーネントやパラメーターをBP_CommonControllerの変数に設定しています。
![](https://fighting-games-build-and-play.com/wp-content/uploads/2020/08/image14-1-1024x166.png)
![](https://fighting-games-build-and-play.com/wp-content/uploads/2020/08/image15-1-1024x135.png)
次に、Primaryと名前の付いた変数にキャラクターの各コンポーネントやパラメーターを設定しているので説明します。
![](https://fighting-games-build-and-play.com/wp-content/uploads/2020/08/image16-1-1024x211.png)
![](https://fighting-games-build-and-play.com/wp-content/uploads/2020/08/image17-1.png)
3人のキャラクターは、個別に移動や攻撃、スタンのパラメーターを持っていますが、Playerは、このPrimaryと名前の付いた変数を使用してキャラクターを操作しています。
キャラクターチェンジをした場合は、このPrimaryと名前の付いた変数に、フレームインしてくるキャラクターのパラメーターを設定することで操作しているキャラクターに反映されます。
したがって、1番目に選択されたキャラクターのスポーンについては、バトル開始時に操作するキャラクターとなるため、Primaryと名前の付いた変数に各コンポーネントとパラメーターを設定しています。
そして最後に、Player01のPrimaryキャラクターを指定する変数”P01 P Char Num”に1番目に選択されたキャラクターを指定する値を設定し、フレームインしているキャラクターを指定する変数”M-in Char Num”に”1″を設定しています。
変数”M-in Char Num”はキャラクターチェンジのときに参照する変数です。
![](https://fighting-games-build-and-play.com/wp-content/uploads/2020/08/image18-1-1024x344.png)
2番目や3番目のキャラクタースポーンについても、ほぼ同じ処理となりますが、違う点は、Capsule_componentのタグの初期値が、サブキャラクターであることを指定するのと、Primaryの設定がありません。
![](https://fighting-games-build-and-play.com/wp-content/uploads/2020/08/image19-1.png)
キャラクタースポーンの処理が完了すると、次はカスタムイベント「Ini-set_sub-char」の処理を開始し、サブキャラクターの初期化を行います。
![](https://fighting-games-build-and-play.com/wp-content/uploads/2020/08/image20-2-1024x557.png)
このイベントでは、サブキャラクターの攻撃用Collision-boxをオフにする設定を行っています。
![](https://fighting-games-build-and-play.com/wp-content/uploads/2020/08/image21-1-1024x403.png)
サブキャラクターの初期化が完了すると、次はサブキャラクター用のアシストタグを表示するWidget_Blueprintを作成します。
![](https://fighting-games-build-and-play.com/wp-content/uploads/2020/08/image22-1-1024x289.png)
画面に表示しているこのタグになります。
![](https://fighting-games-build-and-play.com/wp-content/uploads/2020/08/image23-1.png)
では、この新しいWidget_Blueprintの説明をします。
![](https://fighting-games-build-and-play.com/wp-content/uploads/2020/08/image24-1.png)
まず、デザイナー画面ですが、設定はこれだけであり、簡単です。
![](https://fighting-games-build-and-play.com/wp-content/uploads/2020/08/image25.png)
Blueprintは、まず、イベント「Pre Construct」でマウスカーソルを非表示にしており、イベント「Construct」では、関数「Set Alignment in Viewport」により画面で表示するおおよその位置を指定後に、カスタムイベント「Update Widget Position」と0秒のDelayにより、常に位置を更新している状態となります。
![](https://fighting-games-build-and-play.com/wp-content/uploads/2020/08/image26-1024x732.png)
カスタムイベント「Update Widget Position」では、BP_CommonControllerからアシストキャラクターの位置を参照し、関数「ConvertWorldLocationToScreenLocation」を使用して、Wideget_Blueprintが参照できる値に変換してから、関数「Set Position in Viewport」で詳細な位置の指定と関数「Set Brush from Texture」で表示する画像を指定しています。
![](https://fighting-games-build-and-play.com/wp-content/uploads/2020/08/image27-1024x387.png)
サブキャラクターは2人いるので、もう一つのアシスト用Wideget_Blueprintも同様に処理を行いますが、参照しているアシストキャラクターの位置は、2人目のサブキャラクターを指定しています。
最後にバトル開始のフラグを設定して、バトル前の準備完了となります。
![](https://fighting-games-build-and-play.com/wp-content/uploads/2020/08/image28-1024x240.png)
今回の説明は以上です。
次回は、バトル中のキャラクターチェンジを説明します。
それではまた。
コメントを残す