【Unity6 × VRoid × Mixamo】VRoidアバターをUnity6で動かす方法

【Unity6 × VRoid × Mixamo】VRoidアバターをUnity6で動かす方法

・VRoid Studioで作成したアバターをUnityに取り込む

・Mixamoのアニメーションを設定する

スクリプトでの操作とカメラ制御

ツール・素材ダウンロード先
VRoid Studiohttps://vroid.com/studio
UniVRM パッケージhttps://github.com/vrm-c/UniVRM/releases (VRM 0.x系)
Mixamoアニメーションhttps://www.mixamo.com/#/ (Idle & Walking)

VRoid Studio はこだわりがなければ 「AvatarSample」 をエクスポート!

UniVRM は VRM 0.x系 で最新バージョンをダウンロード

Mixamo設定

Idle

  • Arm-Space:60(少し広めがおすすめ)
  • Trim:0 〜 100
  • Download Format:FBX for Unity / With Skin / 30 FPS / None


Walking

  • Arm-Space:60(少し広めがおすすめ)
  • Trim:0 〜 100
  • In Place:✅ チェック
  • Download Format:FBX for Unity / With Skin / 30 FPS / None

Unity設定(Unity6 LTS 推奨)

  1. Unity Hub (6000.0.23f1 使用) → 新規プロジェクト → テンプレート「Universal 3D」を選択
  2. メニューバー → Assets > Import Package > Custom Package... → ダウンロードした UniVRM パッケージをインポート
  1. Assets 内に Avatar フォルダを作成
  2. vrm ファイルをドラッグ&ドロップ
  3. 自動でPrefab化されるので、それを Hierarchy にドラッグしてシーンに配置

アニメーション読み込みと設定

  1. Assets 内にAnimation フォルダを作成
  2. Idle / Walking の .fbx をドラッグ&ドロップ
  3. .fbx を選択し、Inspector で以下を設定:
    • Rig > Animation Type > Humanoid
    • Animation > Loop Time にチェック

Animator Controller 作成

  1. Assets > Animation 内で右クリック → Create > Animation > Animator ControllerWalkingAnimator と命名
  2. ダブルクリックして Animator ウィンドウを開く

3. Parameters+ > BoolIsWalking を作成

4. Idle / Walking をAnimator ウィンドウ内にドラッグ&ドロップ

5. Idle → Walking、Walking → Idle に それぞれMake Transition

6. Idle, Walking をそれぞれクリックし、以下の条件に設定する ↓

条件設定(Transitions)

TransitionHas Exit TimeCondition
Idle → Walking❌(チェックを外す)IsWalking = true(+を押しtrueに変換)
Walking → IdleIsWalking = false

アバターにAnimatorを設定

  • Hierarchyのアバターを選択
  • Inspector > Animator > ControllerWalkingAnimator を割り当て

スクリプトの追加

  1. Assets 内にScripts フォルダを作成
  2. Assets > Scripts 内で右クリック → Create > MonoBehaviour Scriptを選択 → AvatarMovementController , AvatarMovementControllerと命名
  3. それぞれの.cs ファイルをダブルクリックし、以下の2つのスクリプトをコピーして保存(プログラムの解説はコメントに記載)
スクリプト名役割
AvatarMovementControllerアバターの移動制御
AvatarCameraFollow自分のアバターにカメラを追従

AvatarMovementController.cs

アバターの移動制御

using UnityEngine;

public class AvatarMovementController : MonoBehaviour
{
    private Animator animator;

    void Start()
    {
        // Get the Animator component attached to the avatar
        // アバターにアタッチされているAnimatorコンポーネントを取得
        animator = GetComponent<Animator>();
    }

    void Update()
    {
        // Get horizontal (left/right) and vertical (forward) input values
        // 水平方向(左右)および垂直方向(前進)の入力を取得
        float h = Input.GetAxis("Horizontal");
        float v = Input.GetAxis("Vertical");

        // Determine if the avatar is walking (any movement key is pressed)
        // 移動キーが押されているかどうかで「歩行中」かを判定
        bool isWalking = Mathf.Abs(h) > 0.1f || Mathf.Abs(v) > 0.1f;

        // Pass walking state to the Animator
        // 歩行状態をAnimatorに伝える(アニメーション切り替え)
        animator.SetBool("IsWalking", isWalking);

        // Rotate the avatar based on left/right input
        // 左右キーに応じてアバターを回転
        transform.Rotate(0, h * 100f * Time.deltaTime, 0);

        // Move the avatar forward if up key is pressed
        // 上キーが押されたらアバターを前進させる
        if (v > 0)
            transform.Translate(Vector3.forward * 2f * Time.deltaTime);
    }
}

AvatarCameraFollow.cs

自分のアバターにカメラを追従

using UnityEngine;

public class AvatarCameraFollow : MonoBehaviour
{
    void Start()
    {
        // Create a new camera object named "PlayerCamera"
        // 新しいカメラオブジェクト「PlayerCamera」を作成
        GameObject camObj = new GameObject("PlayerCamera");

        // Add Camera component to the object
        // カメラ機能を付与するためCameraコンポーネントを追加
        Camera cam = camObj.AddComponent<Camera>();

        // Set the avatar as the parent of the camera
        // アバターを親オブジェクトにしてカメラを追従させる
        camObj.transform.SetParent(transform);

        // Position the camera behind and above the avatar
        // カメラの位置をアバターの後ろ&上に設定(追従視点)
        camObj.transform.localPosition = new Vector3(0, 2, -3);

        // Tilt the camera slightly downward
        // カメラをやや下向きに傾けて自然な視点にする
        camObj.transform.localRotation = Quaternion.Euler(13, 0, 0);
    }
}

アタッチ手順

  1. アバターを選択 → Inspector > Add Component
    • AvatarMovementController
    • AvatarCameraFollow を追加
  1. ▶️ Play を押す
  2. Gameビューで以下を確認:
操作動作
前進(Walking)アニメーションが再生
/ 左右に回転
無入力Idleアニメに戻る
視点アバター背後から自動追従カメラで表示される

この時、Hierarchy 内で右クリック → Create > 3D Object > Planeを選択し、Planeをフィールド内に作成しておくと、操作感がわかりやすいです!

このチュートリアルでは、以下の構成でVRoidアバターを操作可能にしました!

・VRoid Studioで作成したアバターをUnityに取り込む

・Mixamoのアニメーションを設定する

スクリプトでの操作とカメラ制御

次回はこのアバターをマルチプレイヤー対応させるためのPhoton活用法をご紹介します!

  • この記事を書いた人

kiro

kiroです。 Blender、Unityなどで学んだことを備忘録としてまとめています。