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

今回はその3ということで、3on3のバトル前の準備について説明します。

キャラクターセレクトが終了すると、Widget_Blueprintのカスタムイベント「Load_BattleStage」の処理が開始され、ノードDelayにより1.0秒間待ってから、Player02が選択したキャラクターの選択禁止マークを非表示にしています。

さらに、Player01と02のキャラクター名称をフレームアウトするアニメーション処理と、画面を白くするアニメーションが再生されます。

その後、ノードDelayにより0.5秒間待ってから、変数”Begin Batlle”にTrueを設定し、Player01のBP_CommonControllerの変数”Fighting-mode”の値を参照して、キャラクターセレクトで使用した6人のキャラクターを全てDestroyしています。

それから、メニュー選択で使用していたレベルのアンロードとバトルで使用するレベルのロードを行ったら、Player01と02で使用するキャラクターのスポーンを行います。

キャラクターのスポーンについては、後ほど説明します。

キャラクターのスポーン後は、BP_GlobalCameraの変数”Start Camera For Battle”にTrueを設定後、バトルミュージックの再生や画面を白から戻す処理とラウンドコールを行っています。

それでは、キャラクターのスポーンについて説明します。

まずは、マクロController IDによって、Player01かを確認後、変数”Fighting-mode”により、今回は”1″の場合が処理されます。

そして、カスタムイベント「Spawn Char For P01-1」を含めた3人分のキャラクタースポーンが処理されます。

キャラクタースポーンでは、スポーンする場所を指定後に、変数”P01-1 Char Num”により、Player01が1番目に選択したキャラクターを特定しています。

その後は、ノードSpawnActorにより指定したClassのキャラクターがスポーンされ、キャラクターブループリントの変数”Order Of Char”とBP_CommonControllerの変数”P01-1 Number Of Char”に1を設定しています。

BP_CommonControllerの変数”P01-1 Number Of Char”については、Player01が1番目に選択したキャラクターを特定する変数で、バトル中のアシストを使用するときに、参照します。

もう一つのキャラクターブループリントの変数”Order Of Char”については、3人のキャラクターの順番から、Playerが操作しているキャラクターなのかを特定する変数です。

表示した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判定で使用しており、これは別の動画で説明します。

キャラクターの順番を特定した後は、キャラクターの各コンポーネントやパラメーターをBP_CommonControllerの変数に設定しています。

次に、Primaryと名前の付いた変数にキャラクターの各コンポーネントやパラメーターを設定しているので説明します。

3人のキャラクターは、個別に移動や攻撃、スタンのパラメーターを持っていますが、Playerは、このPrimaryと名前の付いた変数を使用してキャラクターを操作しています。

キャラクターチェンジをした場合は、このPrimaryと名前の付いた変数に、フレームインしてくるキャラクターのパラメーターを設定することで操作しているキャラクターに反映されます。

したがって、1番目に選択されたキャラクターのスポーンについては、バトル開始時に操作するキャラクターとなるため、Primaryと名前の付いた変数に各コンポーネントとパラメーターを設定しています。

そして最後に、Player01のPrimaryキャラクターを指定する変数”P01 P Char Num”に1番目に選択されたキャラクターを指定する値を設定し、フレームインしているキャラクターを指定する変数”M-in Char Num”に”1″を設定しています。

変数”M-in Char Num”はキャラクターチェンジのときに参照する変数です。

2番目や3番目のキャラクタースポーンについても、ほぼ同じ処理となりますが、違う点は、Capsule_componentのタグの初期値が、サブキャラクターであることを指定するのと、Primaryの設定がありません。

キャラクタースポーンの処理が完了すると、次はカスタムイベント「Ini-set_sub-char」の処理を開始し、サブキャラクターの初期化を行います。

このイベントでは、サブキャラクターの攻撃用Collision-boxをオフにする設定を行っています。

サブキャラクターの初期化が完了すると、次はサブキャラクター用のアシストタグを表示するWidget_Blueprintを作成します。

画面に表示しているこのタグになります。

では、この新しいWidget_Blueprintの説明をします。

まず、デザイナー画面ですが、設定はこれだけであり、簡単です。

Blueprintは、まず、イベント「Pre Construct」でマウスカーソルを非表示にしており、イベント「Construct」では、関数「Set Alignment in Viewport」により画面で表示するおおよその位置を指定後に、カスタムイベント「Update Widget Position」と0秒のDelayにより、常に位置を更新している状態となります。

カスタムイベント「Update Widget Position」では、BP_CommonControllerからアシストキャラクターの位置を参照し、関数「ConvertWorldLocationToScreenLocation」を使用して、Wideget_Blueprintが参照できる値に変換してから、関数「Set Position in Viewport」で詳細な位置の指定と関数「Set Brush from Texture」で表示する画像を指定しています。

サブキャラクターは2人いるので、もう一つのアシスト用Wideget_Blueprintも同様に処理を行いますが、参照しているアシストキャラクターの位置は、2人目のサブキャラクターを指定しています。

最後にバトル開始のフラグを設定して、バトル前の準備完了となります。

今回の説明は以上です。

次回は、バトル中のキャラクターチェンジを説明します。

それではまた。

コメントを残す

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

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