Unity解説 複数Animator Controllerの切替
キャラクターをジャンプさせる。
今回は、複数のAnimator Controllerを切り替て、Humanoid3Dキャラクタに動いてもらうよ。


普通だと、Humanoidのアニメーションを操作する時は、一つのAnimator Controllerに色々設定していくんだけど。。。


この方法だと、瞬時にアニメーションの切替ができて、
Animator Controllerファイルも一つ一つ独立しているから、、、


このファイルが適用されていれば、何々の動作ができるって管理がしやすいんだ。


あまり見ないHumanoidの動かし方ですけど、色々メリットもありそうですね。


さっそくやってみるね💨
フィールドとHumanoidモデルはあらかじめ用意しているものを使う。


☑ フィールドとHumanoidモデルの用意

また、アニメーションファイルのAnimation Clipファイルも用意しておく。


Animation Clipファイルは、mixamoのアニメーションを使わせてもらう。


【参考】
今回は、「待機」と「ジャンプ」のAnimation Clipを用意して、それぞれ「Idle010」と「Jump010」と名付けた。


☑ Animation Clipの用意

Animation Clipの設定で、「Bake into Pose」のチェックをいれるところが三つあるから、全てチェックをいれる。



これは、アニメーションの再生により3Dキャラクターの角度や座標か変化しないようにしているんですね。


次に、Assetsファルダ直下に「Resources」フォルダを作って、その下に「Anicon」フォルダを作る。


そこに、新規にAnimator Controllerを作成して、それぞれ「Idle」と「Jump」と名付けた💨



「Resources」のサブフォルダならどこでも、どんな名前でもいいのですが、「Resources」だけは特別で、今後切替ファイルの選択のために、この名前でフォルダを作る必要があります。


次に「Idle」のAnimator Controllerを開いて、何もないところで右クリック、「Create State」>「Empty」を押す。



「New State」が出来上がるので、それを選択して、InspectorのMotion欄で「Idle010」のAnimation Clipを選択する。



「Jump」のControllerも同様に「New State」を作って、「Jump010」のAnimation Clipを選択する。



3Dキャラクターの「Controller」に先ほど作った「Idle」を選択して適用する。


また、「Apply Root Motion」のチェックを外しておく。



これでゲームを実行すると待機のポーズをとるようになる。



これをスクリプトを使って適用されているControllerを変更するんだ。


コードは以下のとおり。 このスクリプトは3Dキャラクター自体にアタッチする。


【HumanoidJump010.cs】
using System.Collections; using System.Collections.Generic; using UnityEngine; public class HumanoidJump010 : MonoBehaviour { private Rigidbody charaRb; private Animator animator; public bool coroutineFlag = false; void Start() { animator = GetComponent<Animator>(); charaRb = GetComponent<Rigidbody> (); } void Update() { if (Input.GetKeyDown(KeyCode.Space)) { animator.runtimeAnimatorController = (RuntimeAnimatorController)RuntimeAnimatorController.Instantiate (Resources.Load ("AniCon/Jump")); if(coroutineFlag == false) { StartCoroutine(Action010()); } } } IEnumerator Action010() { coroutineFlag = true; yield return new WaitForSeconds(0.5f); charaRb.AddForce (Vector3.up * 3f, ForceMode.VelocityChange); yield return new WaitForSeconds(1.2f); animator.runtimeAnimatorController = (RuntimeAnimatorController)RuntimeAnimatorController.Instantiate (Resources.Load ("AniCon/Idle")); coroutineFlag = false; } }
今回はAddForceを使っているのでRigidBogyとカプセルコライダーを3Dモデルに適用することが必要。



Rigidbodyの設定は、「Mass」を「45」、「Freeze Rotation」の全てにチェックをいれる。



「Capsule Collider」の設定は、「Center(Y)」を「0.8」、「Radius」を「0.2」、「Height」を「1.6」にする。



これで完成。ゲームを実行してみる。 スペースを押すとジャンプするよ。





お名前