はじめに

Unity をはじめて2日。

昨日は短時間でCubeジオメトリーを表示、動かすまで出来ましたが、

Unity の基本操作が殆ど分からない為、カメラ操作をFPS仕様に作りこもうとしましたが挫折。

やはり簡単ではないというか、どこをどう弄ればいいのか全くといっていいほどわからないので、解説サイトなどを読んで基本からやっていく事にしました。

ただ、やり方さえ分かればThree.jsで苦労したキャラクターモデルをアニメーションさせる事などは、驚くほど簡単にできてしまうようです。

Three.jsだと、沢山のコードを書いてモデルを表示して、アニメーション処理もしないといけないので、その苦労を考えるとほんとUnityは楽に実装できます。

驚くことに、コードは1行も書いてないです。

今日は、VROID STUDIOを使ってキャラクターモデルを作成し、それをUnity にインポートし、assetストアからアニメーションデータをダウンロードして動かすところまでやってみたのでそのメモです。

ほぼGUI操作でドラッグアンドドロップで出来てしまうので、内容は浅めです。



1. VRMモデルの準備

  • VRoid でアバター作成
  • .vrm を書き出し
  • Unity に入れるために UniVRM(VRM-0.131.0_3b99.unitypackage) を入手

2. Unityプロジェクトの作成

  • Unity Hub → 3D(Built-in) で新規プロジェクト
  • Project ウィンドウに UniVRM の .unitypackage をドラッグ
  • Import 完了

3. VRM のインポート

  • .vrm ファイルを Project にドロップ
  • Prefab が自動生成される
  • Scene にドラッグするとモデルが表示される

4. Starter Assets(ThirdPerson)を導入

  • Unity Asset Store から StarterAssets: Third Person Character Controller を Import
  • 依存パッケージの警告が出たが、すべて Install/Upgrade して問題なし
  • Unity を一度再起動して安定化

5. 操作用のプレイヤーキャラを配置

  • Assets/StarterAssets/ThirdPersonController/Scenes/Playground.unity を開く
  • デフォルトのロボットモデルを削除
  • PlayerArmature の下にある Geometry に VRM を差し替え

6. 位置ズレによる不自然な動きの発生

  • WASD で動かすと「瞬間ターン」「くるっと急回転」が発生

  • 原因は 親(PlayerArmature) と子(VRM) の位置ズレ

    • Sceneビューで動かしたことで position がズレていた
    • 親の回転軸と子の回転軸が一致していなかった

7. VRMの Transform を修正

  • VRM の Transform → Position = (0,0,0) に戻す
  • 子の位置ズレが消え、正常な歩行・旋回が復活
  • ThirdPersonController とVRMが正しく連動する状態に戻る

8. Skybox の導入

  • Asset Store から AllSky Free を入手
  • Lighting → Environment → Skybox Material に適用
  • シーンに空が追加され、見栄えが向上

今日得たポイント

  • Unityでは Sceneビューの見た目より Inspector に表示されている Transform が実際の基準
  • キャラクター周り(PlayerArmature / Geometry / VRM)は Sceneビューで動かさない方が事故が少ない
  • Starter Assets(ThirdPerson)は PlayerArmature を中心軸 に移動・回転・カメラ制御を行う
  • 親と子の Position / Rotation がズレると、歩行・旋回・カメラ追従が破綻する
  • VRMを差し替えた直後は Position と Rotation を必ずリセット してから確認する
  • Skybox やテクスチャは Project に入れてドラッグするだけで反映される