今回はスタンについて説明します。
スタンの処理は、「BP_Common_Controller」のイベントTickに繋がった処理で、ノード「P01 Stun」で処理しています。
![](https://fighting-games-build-and-play.com/wp-content/uploads/2020/01/Stun01.png)
ノード「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に戻す処理をするために使用します。
![](https://fighting-games-build-and-play.com/wp-content/uploads/2020/01/Stun02-1024x318.png)
スタンゲージが0より大きくなると、ノード「Sequence」により、3つの処理を行っているので説明します。
1つ目の処理は、変数”Check Stun”がTrueの時に、ノード「Do Once」を使用して、変数”P01 Temp Stun”に現在のスタンゲージの値を代入しており、関数「Retriggerable Delay」により、「Do Once」がリセットされるので、変数”P01 Temp Stun”の値が1秒毎に更新されることになります。
![](https://fighting-games-build-and-play.com/wp-content/uploads/2020/01/Stun03-1024x259.png)
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”の初期化をしています。
![](https://fighting-games-build-and-play.com/wp-content/uploads/2020/01/Stun04-1024x262.png)
![](https://fighting-games-build-and-play.com/wp-content/uploads/2020/01/Stun05-1024x217.png)
3つ目の処理は、変数”Reset Stun”がTrueであれば、変数”P01 Hit Back”を確認し、Falseであれば、現在のスタンゲージの値から毎フレーム0.01ポイントづつ、0になるまで引き算します。
ただし、この引き算をしている最中に、ダメージを受けて、変数”P01 Hit Back”がTrueになると、引き算を中止し、その時のスタンゲージの値を変数”P01 Temp Stun”に代入するのと、変数”Check Stun”をTrueにして、スタンゲージの定期的な確認を再開し、変数”Reset Stun”をFalseにして初期化を行っています。
![](https://fighting-games-build-and-play.com/wp-content/uploads/2020/01/Stun06-1024x211.png)
それではスタン時のアニメーションについて説明します。
スタン時のアニメーションは、アニメーションブループリント「Char01_AnimBP」のイベント「Blueprint Update Animation」に繋がった処理で、変数”P01 Stun”を確認して、Trueであり、かつ変数”P01 life”が0より多い場合は、ノード「Do Once」を使用して、カスタムイベント「P01 Stun」の処理を開始します。
![](https://fighting-games-build-and-play.com/wp-content/uploads/2020/01/Stun07-1024x231.png)
カスタムイベント「P01 Stun」では、変数”P01 KO”がFalseであれば、処理を継続し、次のブランチで、変数”P01 Down”の値を確認しますが、ここは必ずTrueの処理となります。
![](https://fighting-games-build-and-play.com/wp-content/uploads/2020/01/Stun08-1024x525.png)
その後、関数「Delay」で指定した1.0秒後に、カスタムイベント「OFF Down Anim」でダウンアニメーションの初期化を行い、スタン状態にするための立ち上がるアニメーションをPlayMontageにより再生し、再生後にカスタムイベント「OFF Down」と「OFF Damage」により、ダウンとダメージの変数の初期化を行った後、スタンのアニメーションをPlayMontageで再生します。
スタンのアニメーション中は、通知「Down Off」により、ダウンや起き上がりの変数の初期化とダメージ判定を有効化しています。
![](https://fighting-games-build-and-play.com/wp-content/uploads/2020/01/Stun10.png)
![](https://fighting-games-build-and-play.com/wp-content/uploads/2020/01/Stun11-1024x122.png)
スタンアニメーション再生後のカスタムイベント「Reset Stun G」により、変数”P01 Stun”を0に設定しますが、スタンアニメーション再生中にダメージを受けた場合は、「BP_Common_Controller」のカスタムイベント「Hit&Damage」の処理で、変数”P01 Stun”がTrueだった場合に、スタン関連の変数を初期化しています。
![](https://fighting-games-build-and-play.com/wp-content/uploads/2020/01/Stun12-1024x139.png)
以上で説明は終了です。
次回は、サイドウォールについて説明します。
コメントを残す