UE5でコンボ攻撃の下地を作ったからそれの備忘録。
調べてる段階だと複雑でとっつきにくいが、
使ってみるとなるほど便利ということがわかる優秀なシステムだと思う。
そんなGameplayabilitySystemを使ったコンボ攻撃の実装と
おまけにUE5で追加されたMotionWarpを使ったダッシュ攻撃の実装をしていく。
大体こんな感じになる
コンボ攻撃を最速入力と遅延入力に対応。
— ネリスさん (@NelisLuna) 2022年5月23日
やっぱ入力した瞬間に攻撃が起動するのがいいに決まってる
ただ、いい感じに入力するとご褒美のあるジャスト〇〇みたいなのあるといいよね pic.twitter.com/mzH38QU6db
先に結論をいうとこういうことができるシステム
目次
- Montageを用意する
- GASの設定をする
- 攻撃~Montage再生~待機を実装する
- コンボ攻撃の攻撃~待機~入力があった場合にMontage再生の仕組みを作る
- AnimNotifyStateを使ってGASのコンボを簡略化する
- MotionWarpの使い方を出す
- まとめ
大まかな概要はこちらを参照
ただ、これは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のため技ごとに多人数で作ってあとでコンボとして組み込むなどもできる。
…正直言うとタグ管理が煩雑になりやすい事とアセット数が爆発的に増える問題があり短期間の開発やプロトタイプで使うようなシステムではない事が使っててわかった。
ステートマシンみたいに全行動の相関関係をまとめて計画しないと地獄になる。
その代わり管理されている限りかなり取り回しのいいシステムで、ちょっとやそっとの変更には動じない盤石な体制を作れる。
いろんな武器でいろんな技を組み替えて戦いたい!という人にはオススメしたいシステムだった。
今回はここまで。これ書くのに時間かけすぎた。
後半はこちら