GASを使ってコンボ攻撃を実装する

GameplayAbilitySystemを使用してコンボ攻撃を実装する方法

1. プラグインを有効化

[Edit > Plugin] から「GameplayAbilities」のチェックを入れてエディタを再起動する。


2. GAの親ファイルを作成

[Blueprint]フォルダの中に[GAS]フォルダを作成する。
その中に [Blueprints > GameplayAbilityBlueprint] から [Gameplay Ability] を選択し、「GA_Combo_Base」という名前でBPを作成する。

「GA_Combo_Base」を開き、IsFirstAttack変数を作成し、下記のようにBPを組む。


3. GAの子ファイルを作成

コンテントドロワーで [GA_Combe_Base > 右クリック > Create Child Blueprint Class] からファイルを作成し、「GA_Combo_C1」と命名する。

「GA_Combo_C1」を開き、コンボ1つめのモンタージュをセットする。
また [IsFirstAttack] にチェックを入れる。

タグを作成する。
[Details > Tags > Ability Tags > Edit > Add New Gameplay Tag] から「Ability.Attack.Combo」というタグ名を入力し、「Add New Tag」をクリック。
タグ名のドットは階層を表す。これはアビリティに付ける名前となる。

次に [Activation Owned Tags] に「Ability.State.Combo_1」というタグを設定する。
これは、このアビリティが実行されている間(EndAbilityノードが実行されるまでの間)所有者に付与されるタグである。

さらに [Activitaion Blocked Tags] に「Ability.State」というタグを設定する。
これにより、「Ability.State.Combo_1」の実行中は「Ability.State.xxx」のタグを持つアビリティが実行できないようになり、連打対策になる。

※タグを編集・削除したい場合
 タグの編集・削除は [Project Settings > GameplayTags] から行う


4. キャラクターBPにアビリティを登録

コンボを実装するキャラクター(もしくはその親クラス)のBPを開く。
コンポーネントにAbilitySystemを追加する。

初期化部分(EventBeginPlayなど)に下記BPを作成。

コンパイルし、「AbilityClass」変数のDefaultValueを先ほど作成した「GA_Combo_C1」に設定する。


5. キャラクターBPでアビリティを使用する

コンボを実装するキャラクターのBPを開く。
下記のようにBPを組む(仮でPキー入力をコンボを行う)。

MakeLiteralGameplayTagContainerノードの [Edit] をクリックして「Ability.Attack.Combo」を設定する。

これでプレイしてPキー入力した時にAbility.AttackComboという名前のアビリティが実行されるようになり、コンボの1つ目の攻撃ができるようになった。


6. 2つ目のコンボを作成

「GA_Combo_C1」をコピーして「GA_Combo_C2」を作成し、開く。
2つ目の攻撃モンタージュを割り当て、[IsFirstAttack] のチェックを外す。

タグを以下のように設定する。

キャラクターBPの「AbilityClass」変数に「GA_Combo_C2」を登録する。

アニメーション通知を作成

AnimNotifyStateを継承したブループリント「ANS_ReadyAttack」を作成し、開く。

「ReceivedNotifyBegin」をオーバーライドして関数を作成し、以下のようにBPを組む。

次に「ReceivedNotifyEnd」をオーバーライドして関数を作成し、以下のようにBPを組む。

もう一つAnimNotifyStateを継承したブループリント「ANS_BranchAttack」を作成し、開く。

「ReceiveNotifyTick」をオーバーライドして関数を作成し、以下のようにBPを組む。


7. モンタージュに通知を設定

「ANS_ReadyAttack」と「ANS_BranchAttack」を追加。
「ANS_ReadyAttack」は次のコンボへ遷移する入力を取得する期間。
「ANS_BranchAttack」で実際に次のコンボへ移行する。

「ANS_ReadyAttack」の [Detail > Anim Notify > Attack Begin Tag] に「Ability.Ready.Combo_2」を設定する。



以上で、コンボ実装完了。