Unity解説 Humanoidモデル操作1

今回は、UnityのInputmanager機能を用いたHumanoidの3Dキャラクターを操作するスクリプトを作成しようと思います。


はい✨
まずは、3Dキャラクターが移動する方向を定めるため、3Dキャラクターを旋回されるスクリプトを作ってみます。これには「Transform.RotateAroundメソッド」を使用します。





【HumanoidTurning001.cs】
using System.Collections; using System.Collections.Generic; using UnityEngine; public class HumanoidTurning001 : MonoBehaviour { private Animator animator; void Start() { animator = GetComponent(); } void Update() { var Turning = Input.GetAxis ("Horizontal"); //右旋回 if(Turning > 0){ animator.SetBool("TurnRight", true); var jiposi = transform.position; //自分の位置を取得 float kaitenchi = Turning; kaitenchi = kaitenchi * 0.3f; //回転値を調整 transform.RotateAround(jiposi, Vector3.up, kaitenchi); }else{ animator.SetBool("TurnRight", false); } //左旋回 if(Turning < 0){ animator.SetBool("TurnLeft", true); var jiposi = transform.position; //自分の位置を取得 float kaitenchi = Turning; kaitenchi = kaitenchi * 0.3f; //回転値を調整 transform.RotateAround(jiposi, Vector3.up, kaitenchi); }else{ animator.SetBool("TurnLeft", false); } } }






【mixamo】



用意した全てのAnimation ClipのInspector画面で、「Loop Time」にチェックを入れておく必要があります。







これをHumanoidモデルのControllerに適用しておきます。 また、ここで「Apply Root Motion」のチェックを外しておきます。





次に、新しいStateを作成し、Motionを先ほど用意した待機のAnimation Clip(Idle050)を選択します。




新しいStateを作成し、右旋回のアニメーションを適用して、Make Transitionで往復に繋ぎます。 Stateの名前は「!RightTurn001」としました。


同様に左旋回用のStateも作成し、同様の設定を行います。ここでは、「!LeftTurn001」というStateの名前にしました。




まず、今回作成した4つのTransitionの「Has Exit Time」 のチェックを外します。



「Has Exit Time」が有効になっていますと、直前のAnimatorのモーションに影響され、即座にモーションが始められないから、今回は無効にしました。

【Unity公式マニュアル アニメーション遷移】
https://docs.unity3d.com/ja/560/Manual/class-Transition.html











はい、それでは次は走るモーションができるようにしていきます。
サンプルスクリプトは以下のとおりです。

【HumanoidRuning001.cs】
using System.Collections; using System.Collections.Generic; using UnityEngine; public class HumanoidRuning001 : MonoBehaviour { private Rigidbody charaRb; private Animator animator; void Start() { animator = GetComponent(); charaRb = GetComponent (); } void Update() { //使用する入力値を変数へ var zengo = Input.GetAxis ("Vertical"); //前進 if(zengo > 0){ animator.SetBool("Run", true); var jiposi = transform.position; //自分の位置を取得 float idouchi = zengo * 0.15f; //移動値を調整 Vector3 velosity = transform.forward * idouchi; charaRb.MovePosition(jiposi + velosity); }else{ animator.SetBool("Run", false); } //後退 if(zengo < 0){ animator.SetBool("RunBackward", true); var jiposi = transform.position; //自分の位置を取得 float idouchi = zengo * 0.15f; //移動値を調整 Vector3 velosity = transform.forward * idouchi; charaRb.MovePosition(jiposi + velosity); }else{ animator.SetBool("RunBackward", false); } } }







「Any State」から「!Run001」に伸びるTransitionのInspectorで「Can Transition To Self」のチェックを外し、Conditions欄で、「 Run」、「True」の条件を指定します。








今回はRigidbodyの「MovePosition」 を使ってキャラクターを移動させますので、キャラクターにRigidbodyをアタッチします。

Rigidbodyの設定は、「Mass」を「45」、「Freeze Rotation」の全てにチェックを入れておきます。


「Mass」の値は1kg単位なんだよね。
くるりちゃんの体重は45kgなの?

知りません💦
続けますよっ❗


そのため、Colliderを適用する必要があり、今回は「Capsule Collider」を適用します。

「Capsule Collider」の設定は、「Center(Y)」を「0.8」、「Radius」を「0.2」、「Height」を「1.6」としました。




お名前