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のほうということで、こっちを見に来た。
色塗る前のアイアンマンっぽいね。
処理の内容は
- 初期化時に親のCharacterとMovementComponentを取得する
- 更新時、使用者がCharacterであれば処理を実行。Sequenceにより3種の処理を行う。
これにより、キャラクター以外で利用されている場合には何もしないようになる。(Idleモーションするだけ) - Sequenceの上段:MovementComponentから移動量であるVelocityを取得。
合わせて移動速度を取得 - Sequenceの中段:平たく言うと、歩いているかのフラグ
加速度があり、移動速度が一定以上であれば「歩いている」と判断する - Sequenceの下段:空中にいるかどうかのフラグ
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のころから同じね
そして最後はコントロールリグ。
中身を見てみる。ダブルクリックっと。
ヴォエッ!!
とりあえず、分解してみていく(ぶっちゃけコメントを翻訳すれば大体わかるけど)
- Step1
FootIKするフラグがTrueならIKのトレースを実行する。
つまるところ、地面に着地しているときはFootIKをするってこと。
自作したFootTrace関数によりトレースを伸ばし、足を下ろさないといけないかどうかチェックする - Step2
Step1で取得したオフセットに向かって座標の補間を行う。
これがないと、足がすぐ最終地点になっちゃうから、ゆっくり足を動かすためにやる。 - Step3
Step2の右側にあるやつ。
足を下に伸ばす都合上、胴体を下げないと足が届かないので、より下に伸ばす足の分、胴体を下げることにする。 - Step4
実は今までやってきたのは変数への値の設定だけで、実際の体に値を設定していなかった。
というわけで、右足、左足、胴体(骨盤)にStep2で計算した値を設定する - Step5
FullBodyIKというノードを使って、なんかいい感じにする!(わからん)
分解してみれば、まぁFootIKの処理としては至極普通の流れであることがわかる。
実行されている見た目を見るとなおわかりやすい。
胴体を右足が下ろさなきゃいけない分下げる。(これのせいで当たり判定が見た目とかなりズレる)
左足はなんかいい感じに曲がる
長くなったけど、UE4の時の雰囲気を残しつつ、テンプレートの時点で満足度できるほどの移動設定がされていて、このまま使えてしまうような親切度合いとなっていた。
変化してる点は多いけど、要点を押さえておけばUE4のときの感覚をあまり崩さずに使えそうだなぁ
今度は自作キャラ突っ込んで、リターゲットとか試してみようかな