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

今回はスタンについて説明します。

スタンの処理は、「BP_Common_Controller」のイベントTickに繋がった処理で、ノード「P01 Stun」で処理しています。

ノード「P01 Stun」では、変数”P01 Stun G”が0より大きいか確認しており、バトル開始直後は、変数”P01 Stun G”の値は0のためFalse側の処理を行います。

False側の処理では、変数”P01 Temp Stun”に0を代入し、”Reset Stun”と”P01 Stun”にFalseを代入して初期化しています。

さらに、変数”Check Stun”にはTrueを代入しますが、これは、スタンゲージが増えた場合に、定期的にゲージの値を確認して、一定時間の間、ゲージの値に変化がなければ、ゲージの値を0に戻す処理をするために使用します。

スタンゲージが0より大きくなると、ノード「Sequence」により、3つの処理を行っているので説明します。

1つ目の処理は、変数”Check Stun”がTrueの時に、ノード「Do Once」を使用して、変数”P01 Temp Stun”に現在のスタンゲージの値を代入しており、関数「Retriggerable Delay」により、「Do Once」がリセットされるので、変数”P01 Temp Stun”の値が1秒毎に更新されることになります。

2つ目の処理は、スタンゲージの値が1.0以上のMAXであるか確認しており、Trueであれば、空中にいるのか確認後、Falseであれば、変数”P01 Stun”をTrueにして、スタン状態とし、変数”Check Stun”と”P01 is Attacking”を初期化しています。

スタンゲージの値が1.0未満である場合は、ノード「Do Once」を使用して、関数”Retriggerable Delay”で指定した2.0秒後に、現在のスタンゲージの値と変数”P01 Temp Stun”の値を比較して、同じであれば、変数”Check Stun”をFalseにして変数”P01 Temp Stun”の値の更新を一時停止し、さらにその2秒後に、この2つの値が同じであれば、4秒間でスタンゲージの値に変化がなかったと判断し、変数”Reset Stun”をTrueにすることで、スタンゲージの値を0に戻す処理を開始します。

2秒後や4秒後に、現在のスタンゲージの値と変数”P01 Temp Stun”の値を比較して、違う場合は、変数”Check Stun”をTrueにして、変数”P01 Temp Stun”の更新を再開するのと、変数”P01 Temp Stun”の初期化をしています。

3つ目の処理は、変数”Reset Stun”がTrueであれば、変数”P01 Hit Back”を確認し、Falseであれば、現在のスタンゲージの値から毎フレーム0.01ポイントづつ、0になるまで引き算します。

ただし、この引き算をしている最中に、ダメージを受けて、変数”P01 Hit Back”がTrueになると、引き算を中止し、その時のスタンゲージの値を変数”P01 Temp Stun”に代入するのと、変数”Check Stun”をTrueにして、スタンゲージの定期的な確認を再開し、変数”Reset Stun”をFalseにして初期化を行っています。

それではスタン時のアニメーションについて説明します。

スタン時のアニメーションは、アニメーションブループリント「Char01_AnimBP」のイベント「Blueprint Update Animation」に繋がった処理で、変数”P01 Stun”を確認して、Trueであり、かつ変数”P01 life”が0より多い場合は、ノード「Do Once」を使用して、カスタムイベント「P01 Stun」の処理を開始します。

カスタムイベント「P01 Stun」では、変数”P01 KO”がFalseであれば、処理を継続し、次のブランチで、変数”P01 Down”の値を確認しますが、ここは必ずTrueの処理となります。

その後、関数「Delay」で指定した1.0秒後に、カスタムイベント「OFF Down Anim」でダウンアニメーションの初期化を行い、スタン状態にするための立ち上がるアニメーションをPlayMontageにより再生し、再生後にカスタムイベント「OFF Down」と「OFF Damage」により、ダウンとダメージの変数の初期化を行った後、スタンのアニメーションをPlayMontageで再生します。

スタンのアニメーション中は、通知「Down Off」により、ダウンや起き上がりの変数の初期化とダメージ判定を有効化しています。

スタンアニメーション再生後のカスタムイベント「Reset Stun G」により、変数”P01 Stun”を0に設定しますが、スタンアニメーション再生中にダメージを受けた場合は、「BP_Common_Controller」のカスタムイベント「Hit&Damage」の処理で、変数”P01 Stun”がTrueだった場合に、スタン関連の変数を初期化しています。

以上で説明は終了です。

次回は、サイドウォールについて説明します。

コメントを残す

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

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