実質的にこの記事の続き
コンボ攻撃はできたから、ダッシュ攻撃を実装する
MotionWarpingを使って、前説明したAnimNotifyStateのようなものを作り
その区間中にRootMotionのように移動量を付与できるというもの
公式はこちら
続きを読む
UE5でコンボ攻撃の下地を作ったからそれの備忘録。
調べてる段階だと複雑でとっつきにくいが、
使ってみるとなるほど便利ということがわかる優秀なシステムだと思う。
そんなGameplayabilitySystemを使ったコンボ攻撃の実装と
おまけにUE5で追加されたMotionWarpを使ったダッシュ攻撃の実装をしていく。
大体こんな感じになる
コンボ攻撃を最速入力と遅延入力に対応。
— ネリスさん (@NelisLuna) 2022年5月23日
やっぱ入力した瞬間に攻撃が起動するのがいいに決まってる
ただ、いい感じに入力するとご褒美のあるジャスト〇〇みたいなのあるといいよね pic.twitter.com/mzH38QU6db
先に結論をいうとこういうことができるシステム
目次
続きを読む
GameplayAbilitySystemと対話中
公式
https://docs.unrealengine.com/4.27/ja/InteractiveExperiences/GameplayAbilitySystem/GameplayAbility/
公式のコピペみたいなもんだけど、エディタ内で翻訳されてないから覚えとかないとね
追記
UE4時代にあったAddGameplayTagsとRemoveGameplayTagsに関して
ノードの機能としては指定したタグを付与したり、削除したりするものだが
UE5のこのノードはUE4のものと違うため、同じ名前なのに違う動作をしている。
UE4の記事みてGASの勉強をするとこの罠にかかるの本当に罠。
同じ効果を持つノードは以下の2つ
Looseで検索をかけると一発で出てくるノード2つ
これがUE4時代のGameplayTagを付与・削除するノードになる。
サードパーソンテンプレートのキャラを自作キャラで乗っ取ることができたので、記録しておく。
思った以上に手順が多くて大変やねんな…
長いから目次が必要
サムネ用
UE4の時と同じなので特にいうことなし!
お好みの設定でインポートしませう
自分はモーフを入れるよ
マテリアルやテクスチャを設定して準備は完了
今回はTポーズのキャラクターだけど、
やることは結局Aポーズでも同じだから何の問題もないね
今回のメイン。UE4から変わりすぎてんよー
前説明をすると、UE5のリターゲットは新しくできたIKリグというアセットを比べて
IKリターゲッタというアセットで配るという仕組みになってる。
とりあえず、IKリグを作る。
できた。プレフィックスはIK_でいいのかな?
個人的にIKRな気がせんでもないけど、公式でIKだしええか…
開くとこんな画面。
見慣れたようなそうじゃないような…
大事なのは右下の赤枠部分。
まずは左上で骨盤にあたるボーンを選んで右クリック
リターゲッティングルートの設定を選択
新しいチェーンを追加するボタンでチェーンを増やして、こんな感じで設定する。
(本当は指やらなんやら細かいチェーンを設定したほうがいいが、今回は省く)
チェーンってなんやねんって思うけど、UE4のリターゲットマネージャの
ヒューマノイドリグを設定する項目を[開始ボーン~終了ボーン]という形でまとめて設定できるようにしたものだと考えれば大体あってるかも。
↓UE4でいうとこれね。ボーン1個1個設定しなくても良くなってすごく楽。しかも自由度UP
とりあえず、これで下準備が完了。
コンテンツ>Characters>Mannequins>Rigs>RTG_Mannequinに
マネキンのIKリターゲッタがあるので開く。
こんな画面。
とりあえずTargetIKRigAssetとTargetPreviewAssetの二つをさっき作ったIKRigとメッシュに置き換え
そして右下のアニメーション一覧から適当なアニメーションを選択すると
リターゲット後のアニメーションをプレビューできる…
が、お稲荷ちゃんはTポーズゆえにこうなる…そりゃそうよ
というわけで、画面上部にあるポーズの編集ボタンを押す
そうするとボーンが選択できるようになって、デフォルトポーズを編集することができる。
あと、詳細にあるTargetActorPreviewの設定をいじると、キャラを重ねられるので
ボーンの位置合わせにちょうどいい感じの設定をしよう
Offsetを0に設定してScaleを良い感じにあわせて
こうやって重ねれば、細かい調整も楽々。
調整が終わったらポーズの編集ボタンを解除して
改めてアニメーションを確認…ヨシ!
ここまで出来たら右下からアニメーションを適当にまとめて選択して、
選択したアニメーションをエクスポートボタンを押す
出力したい場所を選んでリターゲット完了!
ちなみに、IKリターゲッタの設定さえ済ませてしまえば、
従来のアニメーションアセットを右クリックから選ぶリターゲット方法も使える。
こっちでリターゲットする場合、プレフィックスとサフィックスを設定できるので
そういう面ではこっちのほうが優秀
(上記で説明してた方法だと、_Retargetedというサフィックスが勝手について邪魔)
あと、ブレンドスペースは個別にリターゲットしようね
IKリターゲッタにはないからやはり手動でやる必要がある。
リターゲットはできたのに、アニメーションが動いてないって人は
ポーズ編集の解除をしてない可能性がある…注意されたし
UE5ではABPを継承し、親のABPの処理をそのまま使えるという機能が追加されたので
いちいちABPをコピーして変数も同じものを作ってアニメーションも置き換えて…みたいな死ぬほど面倒な作業がなくなった。ありがたく使わせてもらおう。
とりあえずABPを作る
開いたらクラス設定を選択し、親クラスをABP_Mannyに変更する
このABP_MannyがテンプレートのマネキンのABPの本体である
これをすると、多分キャラが残念なことになる。
アシクビヲクジキマシター!!
しかもアニメーションもしない
とりあえず足首曲がってるのはおいといて、
これも新たに増えたアセットオーバーライドの機能を使って
各種アニメーションを差し替えていく。
滅茶苦茶わかりにくいが、右上のここにアセットオーバーライドというタブがある。
ここにさっきリターゲットしたアニメーションをそれぞれ差し替えていく
Idleモーションが再生されるようになった。
足首はくじいたままだけどね
あと、AnimGraphに何もなくても動くのは気味が悪いけど問題なし
そのあたりの説明は以前軽くしてるが、親のABPがすべてやってくれていて
そのアニメーション部分だけを差し替えるという動作のため。
【UE5】サードパーソンテンプレートを見るぞ!!! - ネリスさん備忘録
とりあえず、見てくれが悪いので
足首が曲がる原因である親のFootIk処理を外しておく
ABP_MannyのAnimGraph処理をちょいちょいっとね。
UE4でリターゲットやBP_ThirdPersonCharacterの
BP差し替えしてた人ならなんてことないはずなので省略!
FootIKを使わなくていいという人なら、この時点で作業終了。
今後ABPはABP_Mannyを修正することで子クラスへの変更とすることができる。
Mannyであることを気にする人は自作の親クラスを作ってもいいかも。
正直、これはモデルの作りにも依存するからあくまでお稲荷ちゃんでの話になるが
UE5云々というより、FootIKという仕組みそのものを勉強した方がいいかもしれない。
なんなら自分で実装したほうがいいかもしれないまであるからね。
後述するが、マネキンと同じボーン構造を持っていれば何もしなくてもIKが機能する
とりあえずやっていく。
さっき外したコントロールリグのノードをつなぎなおしておく。
こいつをダブルクリックすると、該当するコントロールリグが開く
CR_Mannequin_BasicFootIKってやつね
中で何してるかの概要は以前説明したから省略。
一言でいえば至極普通のFootIk処理が書かれているだけ。
まずは見た目から。
右上のプレビューシーンから、PreviewMeshを差し替え。
そのままだと、やはり足首をくじいている。
左下のリグ階層はマネキンのものが入ったままなので、全部消す
こんどはImportHierarchyというボタンが現れるので、自分のSkeletalMeshを入れる
今回は必要最低限のボーンだけ残して他は消してしまう。
ボーンを消すたびに左上のモデル表示がグチャるが、
コンパイルすると治るから心配無用
こんな感じで腰から足先までのボーンだけでOK
もともとあった処理のボーン名と同じ(Foot_LやFoot_R)ため
この時点ではこんな感じになる。
ここまで来たら、足のボーン(かかとにあたる場所)を右クリックし
新しいボーンを生成。両足ともに作る
名前はIK_Foot_L、IK_Foot_Rなど。
(名前をこれに合わせると、ちょっとだけ楽ができる)
同じようにしてRootから新しいボーンを作り、IK_Rootという名前にでもしておく
(これの名前はなんでもOK)
そのあと、IK_Foot_L,RをドラッグしてIK_Rootの子に設定する
じゃあ「最初からRootを先に作ってその下にIK_Foot_L,R作ればいいじゃん?」って言われそうだけど
Footのボーンの位置が大事だから必要な回り道なのだ
一応この時点でIKとしては機能するが、アニメーションがおかしくなる
足がね、動かないの。腕だけ振ってる変な感じに。
理由はざっくりとだけど、作ったIK_foot_L,Rが足に追従しておらず
常に地面に足を合わせようとしているせい。くっついちゃってるのね。
マネキンはもともとのモデルがIK用のボーンを所有しており、それが足に追従しているボーンのため何もしなくても動いているが
素人が作ったお稲荷ちゃんがそんなド親切なボーン設計になっているわけもなく。
というわけで、そういう処理を追記する必要がある。
作成したIK用ボーンを足のボーン位置に合わせる処理を追加する
これにてFootIK設定は完了。
動かしてみれば動いてくれるはず。
あと、親のABP_Mannyでワーニングが出るようになるけど気にするな!
気になるならFootIK用のボーン名をちょっと変えようね
(エラー内容はモデルとコントロールリグでボーン名重複しとるからなんとかしてくれってこと)
ここまででマネキンを自作キャラに置き換えて動かすことができているはず
FootIKに関してはモデルの作り次第では何もしなくても動いてくれるし。
ただ、置き換えるにあたってFootIKの処理のアセット名はマネキンのままだし
ABPの親の名前はMannyだしで元のアセットの匂いが強いので
それがアレだという人は名前を変えたり1から作ったり色々いるかも。
一通り俯瞰してみると非常に便利な作りになったけど、
反面適当に使いたい人にとってはスタートアップが煩雑に思えるから難しいところね。
ともあれ、これでUE4の時みたいに自作キャラを走り回らせられるから
キャラで困ることは無くなった!
UE5きた!
とりあえずサードパーソンテンプレートを解体していく!
開いたらいきなりこれだよ…
地形がまず違う
とりあえずまず目につくのはグリッド状のマテリアル
1メートル間隔で太線になってるから距離を測るのにもってこいだし
パーツをきっちりハメやすい。
ちょっと前に無料で配布されていたBlockoutToolsPlaginのような便利さを感じる…
そのマテリアルの中身を見てみると、なんかやけにすっきりしてる
というのも、その左下にこんなノード群が。
なるほどね。マテリアルもパーツ化できるようになったわけね
このNamedRerouteDeclarationっていうノードがパーツ化の正体か
ふうむ、こんな感じで1度作った変数をローカル変数のように保存して
別の場所で取得できるノードってわけだぁ。
ありがちだったスパゲッティを大幅に軽減できるし、ノード整理がしやすくて大変Good
作ったNamedRerouteDeclarationを使いたい場合は、ノードにつけた名前(画像だと「AA」)を検索すれば出てくるみたいね
そんなわけでマテリアルも便利になったし、1メートルのグリッドもデフォで入れてくれててすごい便利になったね。
マテリアルインスタンスで使われてるから、ライン幅とか色とか、結構調整できるから必要に応じて増やそう
そしてプレイ。
デフォルトでFootIKが入ってる…
走りモーションやジャンプモーションも以前のものより滑らかで、つなぎ目が見えなくなってる。
実装を見に行こう…
とりあえずBP。
こっちは前と変わってないみたいだし割愛
アニメーションブループリント(ABP)は、ABP_Quinnっと
クインっていうのね。
実装は…空…?
AnimGraphも無い…なぜ動いているんだ!詰んだ/(^o^)\オワタ
ということもなく、コメントにもある通りABP_Mannyの子クラスであり、実装はすべてそっちで書かれている。
ABP_Quinnはアセットオーバーライドの機能により、対応するアニメーションを女性型のアニメーションに置き換えるだけとなっている。
これすごいね。ガワを変えるだけならこれで済むって話よ。汎用アクションを1回書くだけでいいからすごい楽ねー
あ、MannyとQuinnでマネキンね…
処理の本体はABP_Mannyのほうということで、こっちを見に来た。
色塗る前のアイアンマンっぽいね。
処理の内容は
UE4のマネキンと基本的には同じだが、4番の歩いているかのフラグが新たに追加されている。
そしてこれがAnimGraph。
UE4のマネキンと結構違うのねー
とりあえずここで見れる範囲で言うと、AnimMontage用のスロットがすでに刺さっている事。
MannyのアニメーションにはAnimMontageはないため、おそらくこれを流用した人がそのままMontageを使ったアクションを扱えるような配慮。優しい
それと、コントロールリグが挟まっていること。
あとで書くけどこれはFootIKをしてる。
MainStatesの中身
なんか分離しとる…
とりあえず、Locomotionは↑の画像のLocomotionのことみたい。
分かりにくいから書き足し。
ToFallingとToLandの2つが新しくできたステータスエイリアスノードってやつみたい
ざっくりいうと、このノードにくっついてる条件(⇔みたいなヤツ)を、設定したステート中に満たすとワープしてこれるというノードらしい
ToFallingだと、Locomotionにいるときに落下フラグがTrueになった場合に
ToFallingにワープし、そのままFallLoopアニメーションに切り替わる。
もし上昇している場合は、Jumpモーションをした後に落下アニメーションを行う。
ToLandはその逆ってことで、空中にいるステート中に落下フラグがFalseになる(着地した)場合、着地アニメーションを再生し通常のLocomotionに戻る。という挙動らしい。
なるほどなぁ。複数のステートの所在から、別のステートにワープできるからかなりすっきりするねー
さて、Locomotionはどうなってるかというと、こっちはシンプル
通常はIdleを再生してて、移動したらWalk/Runを再生する。
Walk/Runは移動速度に合わせてブレンドスペースで再生している。これはUE4のころから同じね
そして最後はコントロールリグ。
中身を見てみる。ダブルクリックっと。
ヴォエッ!!
とりあえず、分解してみていく(ぶっちゃけコメントを翻訳すれば大体わかるけど)
分解してみれば、まぁFootIKの処理としては至極普通の流れであることがわかる。
実行されている見た目を見るとなおわかりやすい。
胴体を右足が下ろさなきゃいけない分下げる。(これのせいで当たり判定が見た目とかなりズレる)
左足はなんかいい感じに曲がる
長くなったけど、UE4の時の雰囲気を残しつつ、テンプレートの時点で満足度できるほどの移動設定がされていて、このまま使えてしまうような親切度合いとなっていた。
変化してる点は多いけど、要点を押さえておけばUE4のときの感覚をあまり崩さずに使えそうだなぁ
今度は自作キャラ突っ込んで、リターゲットとか試してみようかな
あるActorからそのSplineの最も近い点を取得し、その割合を出すことで
ActorがSplineの何割進んだかが取れるノード群。
ジップラインを途中からつかみたい時
コースの何割進んだか知りたい時
その他いろいろと使い出がある。
今回は本当にただの備忘録。