Unity5: 自分で作成した人型モデルを利用する(移動+アニメーション)


2017.07.11: created by
Japanese English
目次へ

前提として理解しておくべき知識


Unity5で、自分で作成した人型モデルを利用する(移動+アニメーション)

  1. Unity5 で、自分で作成した人型モデルを利用する(移動)」で作成したプロジェクトを使います。
  2. 上記のプロジェクト内の PlayerMove.unity シーンを元に、 PlayerMoveAnim.unity シーンを作成します。
  3. 人型 Character で使う動作アニメーションを用意します。 ここでは Unity 標準の Standard Assets を使います。
  4. Assets -> Import Package -> Characters -> Allが選択された状態で -> Import
    






    Projectウィンドウの Assets/Standard Assets/Characters/ThirdPersonCharacter/Animation/ の下に人型Characterの動作アニメーションがImportされます。




  5. Hierarchy ウィンドウの AsianBoy に AnimationController コンポーネントを追加します。
  6. ProjectウィンドウのAssets/Scenes で右クリックして Create -> C# Script -> PlayerMoveAnim を生成する。内容を次のように変更する。



  7. PlayerMoveAnim.cs
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class PlayerMoveAnim : MonoBehaviour {
        public float velocity = 1.3f;
        private CharacterController charController;
        private Animator animator;
        void Start () {
            charController = gameObject.GetComponent<CharacterController>();
    	animator = gameObject.GetComponent<Animator>();
        }
        void Update () {
            float h = Input.GetAxis("Horizontal");
            float v = Input.GetAxis("Vertical");
            Vector3 moveDirection =  new Vector3(0, 0, 0);;
            if (charController.isGrounded) {
                moveDirection = new Vector3(h, 0, v);
            }
    	float MovingSpeed = velocity * moveDirection.magnitude;
    	if (MovingSpeed > 0.1f) {
    	    animator.SetFloat("MovingSpeed", MovingSpeed);
    	    transform.LookAt(transform.position + moveDirection);
    	} else {
    	    animator.SetFloat("MovingSpeed", 0.0f);
    	}
            moveDirection.y += Physics.gravity.y;
            charController.Move(velocity * Time.deltaTime * moveDirection);
        }
    }
    
    
  8. ProjectウィンドウのAssets/Scriptsから PlayerMoveAnim を、Hierarchy ウィンドウの AsianBoy 上にドラッグする。 Inspectorウィンドウに "Player Move Anim (Script)" というコンポーネントが追加されたことを確認する。 前に追加した "Player Move (Script)" は使わないのでチェックをはずしておく。






  9. をクリックして実行してみます。
  10. キーボードの矢印キー(↑, ↓, ←, →)または 'w', 'a', 's', 'd' キーで AsianBoy が移動します。 状態によって人型キャラクタのアニメーションが切り替わるのがわかります。 ですが動作の切り替わりが少々緩慢に見えます。




  11. Animatorウィンドウで、「Idle状態からWalk状態への状態遷移」と「Walk状態からIdle状態への状態遷移」 をそれぞれ選択して、Inspectorウィンドウの "Has Exit Time" のチェックをはずします。 これが設定してあると、状態遷移にいつも決まっただけの時間がかかってしまいます。






  12. Sceneを保存します。
  13. 既に PlayerMoveAnim.unity シーンを作成していましたので、上書きします。

    File -> Save Scenes
    
  14. ここで説明した Unity のプロジェクトファイルはこちら Mecanim2.zip


http://nw.tsuda.ac.jp/