UE5でFPSゲーム制作 Part11-AbilitySystemの排他制御
GASにはタグを設定することができ、これによってアビリティ中に他のアビリティをブロックしたり、キャンセルすることができます。
前回の銃の発射処理で説明しなかったGA_Fireを作っていきます。
新規のGameplay AbilityブループリントからGA_Fireと名付け、BP_CharacterのAbility Listに登録します。
GA_Fire
中身はシンプルで、Ability.Action.Fire.Cancelというタグが呼ばれるまでこのGAを実行し続けるだけです。
次にGA_Fireのタグを設定していきます。
Activation Owned Tags:アビリティ実行中にこのタグを与えます。
Cancel Abilities with Tag:アビリティ中にこのタグを持つアビリティをキャンセルします。
Block Abilities with Tag:アビリティ中にこのタグを持つアビリティを実行させません。
以前ダッシュ用に作ったGA_DashにはAbility TagsとActivation Owned TagsにAbility.Action.Dashを設定しておきます。
これでGA_Fireを実行時にAbility.Action.Dashを持つGA_Dashをキャンセルし、また発射中GA_Dashは使用できません。
個人開発でGASを導入したい理由の一つがこの排他制御の簡単さです。
BPだけでこの制御を作る場合、ダッシュと射撃にフラグを作って、それぞれのフラグを監視する必要があるため管理がとても面倒になります。
2つだけなら別にそれでもいいんですが、FPSを作るとなると今後あとリロードや武器スワップ、ADSなどのアクションを作る必要があります。ゲーム性に応じてさらにアクションは増えていくと思われるため、GASによる排他処理は非常にありがたいです。