(この記事の使用環境: Unity5.4.2f2 Personal、Windows10


今回は、UnityのStandard AssetsのCharactersにある「ThirdPersonController」を使って、プロ生ちゃんのモデルを動かしてみました。
全画面キャプチャ 20170111 200513

こんな感じ。前後左右に走り、歩き、しゃがみ、ジャンプします。

 
ProjectビューでImport Package>CharactersからStandard Assetsをインポートし、そのなかにある「ThirdPersonController」をシーンビューに配置します。
全画面キャプチャ 20170111 191817

配置するとこんな感じ。トップにAnimatorやらスクリプトやら何やらがアタッチされたゲームオブジェクトがあり、その下にモデルのEthanさんの体やら眼鏡やらがぶら下がっているのが分かります。
全画面キャプチャ 20170111 192320

次に、動かしたいモデル(今回はプロ生ちゃん)をThirdPersonCharacter直下にぶら下げます。そして、もともとぶら下がっていたEthanさんの体やら眼鏡やらは無効にします(または削除します)。
全画面キャプチャ 20170111 192744

動かしたいモデルのAnimatorコンポーネントに設定されているAvatarが何か見ておきます。
全画面キャプチャ 20170111 193158

ThirdPersonControllerのAnimatorコンポーネントに設定されているAvatarを、動かしたいモデルのAvatarに差し替えます。これで乗っ取り完了です!冒頭の動画ように動くようになります。これが、Unityマニュアルに書いてある「ヒューマノイドアニメーションのリターゲティング」ですね!(ピコーン
全画面キャプチャ 20170111 193341

ThirdPersonControllerにアタッチされているスクリプトは2つ。「ThirdPersonUserControl」のほうにユーザーからの操作を受け付ける処理が書かれています。「ThirdPersonCharacter」には各種パラメータを定義している感じのようです。
 全画面キャプチャ 20170111 194146

で、ThirdPersonUserControlスクリプトの中身(の一部)。日本語のコメントだけ書き加えました。
上下左右キーまたはWASDキーで移動、Cキーを押している間はしゃがみ、左シフトキーを押している間は歩き、スペースキーでジャンプ、というのが(PCでの)操作方法のようです。思ったよりもシンプルなので改変もできそうです。

        private void Update ()
        {
            if (!m_Jump)
            {
                m_Jump = CrossPlatformInputManager.GetButtonDown ("Jump");   // スペースキーを押すとジャンプする
            }
        }

        // Fixed update is called in sync with physics
        private void FixedUpdate ()
        {
            // read inputs
            float h = CrossPlatformInputManager.GetAxis ("Horizontal");      // 左右キーまたはA・Dキーで左右に動く
            float v = CrossPlatformInputManager.GetAxis ("Vertical");        // 上下キーまたはW・Sキーで前後に動く
            bool crouch = Input.GetKey (KeyCode.C);                          // Cキーと押している間はしゃがむ(移動可)

            // calculate move direction to pass to character                // キャラ操作の前後左右をカメラの方向に合わせる
            if (m_Cam != null)
            {
                // calculate camera relative direction to move:
                m_CamForward = Vector3.Scale (m_Cam.forward, new Vector3 (1, 0, 1)).normalized;
                m_Move = v * m_CamForward + h * m_Cam.right;
            }
            else
            {
                // we use world-relative directions in the case of no main camera
                m_Move = v * Vector3.forward + h * Vector3.right;
            }
#if !MOBILE_INPUT
            // walk speed multiplier
            if (Input.GetKey (KeyCode.LeftShift)) m_Move *= 0.5f;        // 左シフトキーを押している間は歩く(しゃがみ併用可)
#endif

            // pass all parameters to the character control script
            m_Character.Move (m_Move, crouch, m_Jump);
            m_Jump = false;
        }
    }


上下左右移動のキー操作入力をUnityStandardAssets.CrossPlatformInputパッケージのCrossPlatformInputManager(長い)で行っており、PC以外の環境でも動作するようになっているようです。試せてはいませんが。
全画面キャプチャ 20170111 195113

今回は以上です。