こちらは、連載記事の第6回となります。第1回・第2回・第3回・第4回・第5回を読んでいない方は、先にそちらからお読みください。
パンチでスタミナを消費させ、グレイマンに常駐するようにスタミナ回復を実装してきました。
しかし、常にスタミナ回復処理が走っていると違和感がある為、パンチを放ってから数秒間はスタミナ回復をさせないようにします。
ということで、スタミナ回復させない処理もGameplayEffectで実装していきます。
と、ここで・・・え?って思われるかもしれません。
今までGameplayEffectはスタミナを消費したり、スタミナを回復させたりと、GaemplayAttributeを加算・減算する為に使用していましたが、今回は「スタミナの自動回復をさせない」為のGameplayEffectとなります。そう考えると、今回の実装にGemeplayEffectを使うというのは違和感があるかもしれません。
しかし、言い換えれば「GE_RecoveryStaminaの邪魔をするGameplayEffectを作る」とも言えます。これを念頭に置いて、クールタイム用のGameplayaEffectを作っていきましょう。
名前はGE_Cooltimeとします。
GE_Cooltimeが作られました。
次に、クールタイムの為のGameplayTagを追加します。名前はそのまま”ability.cooltime”としました。
先に今回の実装内容を言っておくと、この”ability.cooltime”が有効な時はGE_RecoveryStaminaは動作しないように設定しておき、今回作成したGE_Cooltimeで”ability.cooltime”の有効・無効を制御する形となります。
クールタイム用のGameplayEffectは以下の通りです。
とは言ってもとても設定する項目は少なくて、「DurationPolicy」に”Has Duration”を指定し、「Scalable Float Magnitude」に”2.5″(Scalable Floatのまま)を指定しました。
そして、「GrantedTags」→「Added」に”ability.cooltime”を設定しています。
GE_Cooltimeにて”ability.cooltime”の有効・無効を制御しており、それは上記で指定した2.5秒間だけ有効になるという設定になります。
次にGE_RecoveryStaminaを修正します。これも、上述の通りですが、”ability.cooltime”タグが有効な時は動作させないという設定をしています。
これは「OngoingTagRequirements」→「IgnoreTags」に”ability.cooltime”を設定するだけです。意味は、このタグが設定されているときは、このGameplayEffectは一時的に無効になるという設定になります。
パンチを放った瞬間に、先ほど作成したGE_Cooltimeを有効にしたい為、GA_Panchに以下の修正を加えます。
このノードを呼び出してから2.5秒間は”ability.cooltime”タグが有効になり、スタミナ自動回復が停止します。
早速プレイしてみましょう。
パンチを放った後にスタミナの回復が一時的に停止していることが確認できると思います。
これでクールタイムの実装が完了しました。
GA_PanchのBPを触った以外は、タグの設定のみでスタミナのコントロールを行っています。このタグベースで制御できる事が、GASの利点の一つとなります。
次回はGameplayCueを使ってグレイマンのパンチに効果音を付けてみようと思います。
No responses yet