今回は前後左右の移動に専用のモーションを割り当てる作業です。斜め移動の際は各モーションがブレンドされます。
あわせて、右方向のモーションをミラーして左方向のモーションとして使う手順も説明します。
参考資料:Amazon Game TechのYoutubeチャンネル
作業に先立ち、Mayaで後方移動と右移動のモーションを作成して、FBXファイルとして以前作った専用フォルダに配置しました。

ここからLumberyardでの作業です。
まずモーションミラーのセットアップを行います。ミラー設定はモーションにではなくActorに対しての作業になります。
Animation EditorのFile - Open Actorで使っているActorを開きます。

Actorが開きました。

View - Actor Managerを実行します。

Actor Managerが開きます。Mirror SetupのClick to setupをクリックします。

"Left:"と"Right:"に、キャラクターの各ジョイントに付けた左右のプレフィックスを入力します。(今回は"L_"と"R_"を使っています。)

入力が終わったら、右にあるPerform name based mappingアイコンをクリックします。

処理が実行された事を示すウィンドウが表示されますので、OKをクリックします。
Mirror Setupビューの下カラムにマッピング結果が表示されています。

セットアップが終わったらセーブアイコンからセーブします。

Mirror Setupは以上で終了です。ビューを閉じます。
続いて新規モーションの追加です。これは以前行ったのと同じ手順です。
追加が終わったらモーションセットをセーブします。

次はモーションブレンドのセットアップです。
以前作ったAnim Graphを開きます。

Anim Graphのパラメータに、モーションブレンドのウェイト値として使うfloatパラメータを追加します。範囲は0.0〜1.0です。

名前はDirectionとしました。

Anim Graphで、マウス右クリックで出るメニューからBlend Treeを選びます。

Blend Treeノードが追加されました。

以前State Machineに行ったのと同じ手順でトランジションを作成します。条件式には以前作ったGoパラメータを使い、値が3の時にBlend Treeに入り4の時に抜ける様に設定しました。

Blend Treeノードをダブルクリックして開きます。中はこの様になっています。

Blend Nノードを追加します。

Blend Nノードが追加されました。

Motionノードを追加します。

Motionノードが追加されました。

Motionノードを選択した状態で、アトリビュートからモーションをロードします。

選択しているMotionノードに前進モーションがロードされました。

同じ手順で、4個のMotionノードに前進モーション・後退モーション・右移動モーション2個を割り当てました。

右移動モーションの内の1個を選択し、アトリビュートのMirror Motionにチェックを入れます。これでモーションがミラーされ、左移動モーションとして使える様になります。

Parametersノードを追加します。

Parametersノードが追加されました。ノードには、現在Anim Graphが持っているパラメータが表示されています。

Anim Graphにある全ノードを下図の様に接続します。

先ほどAnim Graphに追加したDirectionパラメータをモーションブレンドのウェイトとして使っています。これで、Directionパラメータの数値を0.0から1.0の間で変化させる事によって各モーションがブレンドされながら変化する様になりました。
各モーションノードの順序は前回作成したスクリプトに従っています。後方が0.0で、そこから値が上がるにつれて左→前→右となり、1.0で再び後方に戻ります。
モーションブレンドのセットアップは基本的にこれでOKです。
Anim Graphをセーブします。

ここからは細かい調整です。
モーション間のガタつきを抑える為、Blend NノードのアトリビュートでSync ModeをFull Clip Basedにします。

Motionノードのアトリビュートで再生スピードの調整を行います。これは実際に表示してみてからの作業になります。

Blend Treeへのトランジションの時間を調整します。これが長いと移動し始める時に足が滑ってしまうので、デフォルトより短めにしました。

作業が終わったらAnim Graphをセーブします。

前回作ったスクリプトを使ってキャラクターのスクリプトを改造します。前回作った「アナログスティックの角度を0.0〜1.0の数値に変換するスクリプト」の結果部分を、先ほどAnim Graphに追加したDirectionパラメータ(モーションブレンドのウェイトとして使っているパラメータ)に接続しています。これで、アナログスティックの角度に応じてモーションブレンドが変化する様になりました。
前に作った前進モーションを表示する部分は、必要無くなったので削除します。

結果はこんな感じです。
No comments:
Post a Comment