コンボのベースクラスとなる、Gameplay Ability を継承したクラス。各コンボのためのクラスはこれを継承して作る。派生クラスの方に重複した処理を書きたくないため、このクラスにすべての処理を集中させている。Wait Gameplay Tag Add to Actor ノードの引数 Only Trigger Once にチェックを入れることに注意。これにチェックを入れなかったためにかなり調べることになった。これにチェックが入っていない場合は、コンボの2段目が2回実行されてしまう。コンボの一段目かどうかを判定する関数。今回のコンボではこれでよいが、作り方によって一段目かどうかの判定条件は変わる。Gameplay Ability に設定値としてフラグを持たせてもよいと思うが、設定をミスしそうなので関数にした。Gameplay Tag をつけたりはずしたりする関数。いろいろな記事では Loose Gameplay Tag を使っているが、Gameplay Tag で構わない。Gameplay Tag と Loose Gameplay Tag で何が違うのかは、調べたがわからなかった。
工夫: Tag の情報を画面に出力する
現在の Gameplay Tag の状況をリアルタイムで画面に表示する関数。GAS をアクティベートするアクタの Tick から呼び出す。ポイントとなる点は赤い角丸で囲っている。Ability System -> Get Owned Gameplay Tags -> Get Debug String from Gameplay Tag Container でも大まかな情報を文字列で取得できるが、それでは情報が足りないと思ったので作った。
工夫: 実行を遅くしてよく観察する
Console Command の slomo コマンド、もしくは Set Global Time Dilation ノードを実行して処理を遅くし、挙動をよく観察する。
参考資料: GAS の基本的な仕組み
GAS の基本的な仕組み(実行・入力受付可否の切り替え・次のアニメーションへの移行を待つ)は以下の記事を参照した。