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

今回はその8として、3on3のアシスト時の衝突判定やWidget_Blueprintについて説明します。

アシスト時のキャラクター同士の衝突については、Capsule_componentのタグの設定が必要で、キャラクターブループリントのTickに繋がったノード「Set Capsule Tag」で処理しています。

ノード「Set Capsule Tag」では、変数”Player01″の値を確認後、R1かR2ボタンのキャラクターチェンジが実施されたときに、ノード「Do Once」で処理を開始します。

その後は、関数「Delay」の処理後に変数”Order Of Char”で何番目に選択されたキャラクターなのか確認後、変数”P01 Order Of Char”でキャラクターの順番を特定したら、Capsule_componentにPrimaryかSubの値を設定しています。

それでは次に、Capsule_componentがオーバラップしたときの処理について説明します。

Capsule_componentがオーバラップしたときはイベント「On Component Begin Overlap」で処理しており、変数”Begin Judge For OL”で衝突判定が許可されているかや、オーバーラップしたアクターのタグがPlayerであるかを確認しています。

その後、変数”Player01″の確認やCapsule_componentタグの値を確認した結果に応じて、オーバーラップしたのがPrimaryキャラクターであれば、BP_Common_controllerのイベント「 On Overlap of Capsule」を処理し、サブキャラクターであれば、変数”Overlap Of Capsule”をTrueに設定しています。

また、オーバラップが解除されたときは、イベント「On Component End Overlap」で同様の処理を行い、BP_Common_controllerのイベント「 OFF Overlap of Capsule」や変数”Overlap Of Capsule”をOFFにする処理をしています。

それでは、サブキャラクターと衝突したときの処理について説明します。

サブキャラクターと衝突したときの処理は、キャラクターブループリントのTickに繋がった、ノード「Overlap_for_Sub」で処理しています。

ノード「Overlap_for_Sub」では、自分自身のY座標の値を変数”Y Position”に設定後、変数”Overlap of Capsule”や”Player01″の値を確認後、衝突したキャラクターがステップしているか、空中にいるか、止まっているかの状態を確認後に、プライマリーキャラクターの速度を優先した移動処理をしています。

つまり、プライマリーキャラクター同士の衝突は、減速や相殺処理を含めていますが、サブキャラクターとの衝突は、プライマリーキャラクターの速度が優先されて、その速度に従った処理をすることになります。

それでは、次にアシストキャラクターがダメージを受けたときの処理について説明します。

アシストキャラクターがダメージを受けたときは、キャラクターブループリントのイベント「On Component Begin Overlap」に繋がったマクロ「Judge of Damage」で処理しています。

マクロ「Judge of Damage」では、変数”Begin Judge For OL”で衝突判定が許可されているかや、オーバーラップしたコンポーネントのタグがDamgeでないことを確認しています。

その後、変数”Player01″の確認やオーバーラップしたアクターが味方ではないことが確認できたら、変数”Player Side”の値を確認しています。

その後、変数”Player Side”の値に応じたヒットエフェクトの位置を変数”Hit Point for Effect”に設定したら、変数”P01 Char01 Anim BP”と”P01 Order of Char”を使用して、PrimaryかSubキャラクターなのかを確認しています。

その後、HPバーの減算処理や、ダメージアニメーションとヒットサウンドの再生、アシストの終了処理を行い、ダメージアニメーションの再生が終了すると、フレームアウトのエフェクトやアシストを管理している変数の初期化、サウンドの再生、投げのダメージ判定を有効にする処理をしています。

最後にアシストを使用した場合は、UIで使用禁止マークを表示するので、Widget_Blueprintの処理を説明します。

例えばR1ボタンのアシストの場合は、Widget_BlueprintのTickに繋がったノード「P01 Change1」で処理しており、変数”Fighting-mode”と変数”P01 R1 Assist”の値を確認して処理を開始します。

ゲームがポーズされていないことを確認したら、変数”P01 Count of as-1″に毎フレーム、1を加算した後、ノード「Sequence」を使用して、変数”P01 Count of as-1″が5以上で使用禁止マークの表示をするアニメーションを再生し、120以上で、使用禁止マークを非表示にするアニメーションを再生しています。

使用禁止マークを非表示にしたあとは、変数”P01 Count of as-1″や”P01 R1 Assist”の初期化をした後、OKを表示するアニメーションとサウンドを再生しています。

今回の説明は以上です。

次回は、チェーンコンボについて説明します。

それではまた。

コメントを残す

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

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