ネリスさん備忘録

主にUE4の備忘録を残すよ!

【UE5】GamePlayAbilitySystemによるコンボ攻撃の実装とそれに利用する小ネタ 前編【GAS】

UE5でコンボ攻撃の下地を作ったからそれの備忘録。

調べてる段階だと複雑でとっつきにくいが、
使ってみるとなるほど便利ということがわかる優秀なシステムだと思う。

そんなGameplayabilitySystemを使ったコンボ攻撃の実装と
おまけにUE5で追加されたMotionWarpを使ったダッシュ攻撃の実装をしていく。

大体こんな感じになる

先に結論をいうとこういうことができるシステム

 

目次

 

 

大まかな概要はこちらを参照

historia.co.jp

ただ、これはUE4のものでUE5ではいくつか変更点があるためそれを補足して
さらに今後使いやすいように作っていく

 

下準備

Montageを用意する

何はともあれコンボ用のAnimationMontageを作る必要がある
好きな攻撃アニメーションを右クリックして作成する→AnimMontageを作成でMontageを作成する
(右クリックで出てくるメニュー多すぎぃ!)

そして連撃に使うアニメーションを並べて…

モンタージュセクションもそれぞれ切って…

ひとまずMontageの用意は完了。

 

GASの設定をする

GASのプラグインの追加と必要になる最低限のタグの追加をする

プラグインの設定を開き、GameplayAbilitiesをONにして再起動

多分設定はこれだけでよかったはず。

Abilityを作ってMontageを再生する

コンテンツブラウザの空いている場所を右クリックして
ブループリント→GameplayAbilityブループリントを選択して
Abilityを作成する

クラスの継承ができるが、GameplayAbilityを選択。

名前はとりあえずこれで

このBPを開いたら、以下のようにノードを並べる

そのあと、「クラスのデフォルト」を選んでタグを設定していく。

「編集...」を押すと画面が出てくるので、新しいものを追加する場合、
「新しいゲームプレイタグを追加」から名前を「〇〇.✕✕.△△」というスタイルで追加
今回は「Ability.Action.Attack」として設定

同じように設定していき、こんな感じにする
ActivationBlockedTagsの二つは今は関係ないよ

ひとまず攻撃1つはこれで準備完了



キャラでアクションを実行させる

ThirdPersonテンプレートでやってるので
BP_ThirdPersonCharacterで新しいコンポーネントを追加
AbilitySystem。そのまんまや



あとは変数を作成。GameplayAbility型の配列。
これのデフォルトにさっき作ったAbilityを設定

それをBeginPlayで全部GiveAbilityする
このGiveAbilityによってアビリティが登録されて使えるようになる

そして何らかのボタンでイベントが起こせるようにして
TryActivateAbilityByTagノードでアビリティを実行する

ここで指定するタグは、Abilityを作成するときに設定した
AbilityTagsのタグを使う。

これで作成したGA_Combo_1というアビリティが実行され攻撃アニメーションが再生される


攻撃~Montage再生~待機を実装する

コンボ攻撃の攻撃~待機~入力があった場合にMontage再生の仕組みを作る

AnimNotifyStateを使ってGASのコンボを簡略化する

MotionWarpの使い方を出す

これらは次回以降書く!長いんじゃい!

まとめ

激烈に長すぎて記事が完成しないから、いったんまとめる

そもそも、この攻撃1個するにもクソほど手間のかかるシステムを使って何かいいことあるんか?ってことについて

結局は大体こんな感じ

キャラクター側は「攻撃したい」という旨をシステムに通知してやれば
今持ってるアビリティ(GiveAbilityされたAbility)の中から実行可能なものを自動選択して実行してくれるため、頭悪く攻撃連打してもいい感じにしてくれる。

キャラクターとAbilityが切り分けられているため、例えば武器を変更したり、スキルセットを変更したという場合には
持っているAbilityをごっそり差し替えるだけでキャラクターのアクションを変えることができてしまうのだ。

キャラクターは「攻撃したい」しか言わなくてもいいため、キャラクターBPの肥大化が防げる他、技1個1個が別のBPのため技ごとに多人数で作ってあとでコンボとして組み込むなどもできる。

 

…正直言うとタグ管理が煩雑になりやすい事とアセット数が爆発的に増える問題があり短期間の開発やプロトタイプで使うようなシステムではない事が使っててわかった。
ステートマシンみたいに全行動の相関関係をまとめて計画しないと地獄になる。
その代わり管理されている限りかなり取り回しのいいシステムで、ちょっとやそっとの変更には動じない盤石な体制を作れる。

いろんな武器でいろんな技を組み替えて戦いたい!という人にはオススメしたいシステムだった。

今回はここまで。これ書くのに時間かけすぎた。