GameplayAbilitySystemを使用してコンボ攻撃を実装する方法
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」を設定する。
以上で、コンボ実装完了。