今回は前後左右の移動に専用のモーションを割り当てる作業です。斜め移動の際は各モーションがブレンドされます。
あわせて、右方向のモーションをミラーして左方向のモーションとして使う手順も説明します。
参考資料: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