😊

[初心者向け]Unityの3Dキャラクターのセットアップ

2024/01/23に公開

3Dキャラクターをアニメーション付きで動かせるようにセットアップする方法と、カスタマイズ方法を解説します。

アセットのインポート

Unityが公式で配布している3Dキャラクター用のアセットが優秀なので、まずはそれをインポートします。
https://assetstore.unity.com/packages/essentials/starter-assets-thirdperson-updates-in-new-charactercontroller-pa-196526?locale=ja-JP

インポートの仕方は、僕が前に書いたこちらの記事を参考にしてください。
https://zenn.dev/sumeragi_0258/articles/74232366da9673#スプライトのインポート

基本的には、"DownLoad","Import","Yes"を押していけばいいです。

それと、入れ替え用の3Dキャラクターアセットもインポートします。
https://assetstore.unity.com/packages/3d/characters/humanoids/character-pack-free-sample-79870

また、無料の地形アセットをインポートします。
https://assetstore.unity.com/packages/3d/environments/landscapes/low-poly-simple-nature-pack-162153

アセットを配置する

では、まずはサンプルのマップを読み込みます。
Projectウィンドウから、"SimpleNaturePack"->"Scenes"->"SimpleNaturePack_Demo"をダブルクリックして、シーンを開いてください。

すると、このようなマップのシーンが開きます。

次に、キャラクターを配置します。
先ほどインポートしたStarter Assetsのものを使います。
Projectウィンドウから、"StarterAssets"->"ThirdPersonController"->"Prefabs"の中から、次の3つをHierarchyウィンドウにドラッグ&ドロップしてください。
・MainCamera
・PlayerArmature
・PlayerFollowCamera

そうすると次のようなピンク色の3Dキャラクターが画面に出現しますが、モデルは入れ替えるため、気にしないでください。

初期セットアップ

3Dモデルを用意したものに入れ替えます。
その前に、HierarchyでPrefab化されているゲームオブジェクトを。Prefab化から解除しましょう。
"PlayerArmature"を右クリックして、"Prefab"->"Unpack Completely"をクリックします。

そうすると、PlayerArmatureの色が青色から白に変わることが確認できます。

次に、デフォルトに設定されている3Dキャラクターオブジェクトを削除します。
"PlayerArmature"->"Geometry"->"Armature_Mesh"を削除してください。

ピンクの3Dキャラが削除されたことを確認できます。

次に、代わりの3Dキャラクターを配置します。
Projectウィンドウの"Supercyan Character Pack Free Sample"->"Prefabs"->"Base"->"High Quality"->"MaleFree1"を、
Hierarchyの
"PlayerArmature"->"Geometry"の下にドラッグ&ドロップしてください。

キャラクターのPositionを0,0,0に設定してください。

依然として地面に埋まったままかと思うので、"PlayerArmature"を選択して、地面に接地するように上に持ち上げてください。

次に、今の状態だと、身体と当たり判定が一致していないので、
"PlayerArmature"の"Character Controller"コンポーネントの値を次のように変更します。

これで、緑のカプセルが身体の高さと一致するようになりました。

次に、入れ替えた3DキャラクターのAnimatorが邪魔なので、機能しないようにします。
"PlayerArmature"->"Geometry"->"MaleFree1"の"Animator"コンポーネントのチェックを外します。

また、ここで使用されている"Avatar"の"common_people@mposeAvatar"という名前を憶えておきます。

次に、Hierarchyウィンドウの"PlayerArmature"の"Animator"コンポーネントの"Avator"を、先ほどの"common_people@mposeAvatar"に変更します。

あとは、シーンに最初からあるCameraは不要なので、削除してしまいます。

ここまでやったら、ひとまず、これでゲームを実行してみましょう。
キャラクターが動くことが確認できます。

カメラを追従させる

Hierarchyにある"PlayerFollowCamera"の"CinemachineVirtualCamera"コンポーネントの"Follow"プロパティに"PlayerArmature"の"PlayerCameraRoot"をセットします。

この状態ですでにカメラが追従するようになったのですが、元の3Dキャラクターの背が高かったのでカメラの位置が高いです。
なので、"PlayerArmature"の"PlayerCameraRoot"のPosition_Yを1に変更します。

これで、カメラが丁度よく追従することが確認できます。

もし手ぶれをなくしたい場合は、
"PlayerFollowCamera"の"CinemachineVirtualCamera"コンポーネントの"Noise"を"none"に変更するとなくなります。

任意のアニメーションに変更する

・BlendTreeを知る

アニメーションを組み込む前に、現在のキャラクターに適用されているアニルーションの仕組みを解説します。

"PlayerArmature"のAnimatorコンポーネントの"StarterAssetsThirdPerson"をダブルクリックします。そうすると、Animatorウィンドウが開きます。

基本的なAnimatorとAnimation周りについてはこちらの記事で解説しています。
https://zenn.dev/sumeragi_0258/articles/74232366da9673#複数のアニメーションを使用する

ここでは、その記事では解説していないBlendTreeについて解説します。

まず、Animatorウィンドウにある、"Idle Walk Run Blend"をダブルクリックしてください。これはBlendTreeなので、BlendTreeの設定画面に移行して、このような画面になります。

BlendTreeをクリックすると、Inspectorに次のような表示がされます。

BlendTreeを一言で表すと、ある値の変化に応じて複数のアニメーションを滑らかに変化させる仕組みです。
例えばこのインスペクターで説明すると、"Parameter"にSpeedの変数が設定されていて、Speedが0から6に徐々に変化していくと、0で"Idle"が、2で"Walk_N"が、6で"Run_N"のアニメーションが再生されて、1だと"Idle"と"Walk_N"の両方がうまい具合に混ざって再生されます。

これを簡単に確認する方法として、インスペクターの一番下の"Blend Tree"という罫線にマウスを合わせて、持ち上げてください。

ここで、数値に応じたアニメーションを確認できます。

altを押しながらマウスでドラッグすると、角度を変えられるので、見やすい角度に調整してください。

再生ボタンを押してみると、アニメーションがループ再生されます。

その状態で、Animatorウィンドウの、Speedのバーをドラッグして値を変えると、値に応じてアニメーションが滑らかに変わることが確認できます。

それでは、これを参考に、BlendTreeを作りましょう。

・BlendTreeの作成

サンプルとして、次の無料のアニメーションをインポートしてください。
https://assetstore.unity.com/packages/3d/animations/melee-warrior-animations-free-165785

次の階層に、歩行や走りのアニメーションがあることが確認できます。

Animatorウィンドウの左上の"Base Layer"をクリックして、画面を元に戻します。

空いているところを右クリックして、"Create State"->"From New Blend Tree"をクリックして作成してください。

作成されたBLendTreeを選択して、"Multiplier"の横の"Parameter"をチェックして、"Multiplier"の値と、"Foot IK"を次の画像のように設定します。

・MultiplierにMotionSpeedをセットすると、MotionSpeedの値をSpeedに乗算することができるので、端的に表すとモーションの早さを変えられるようになります。

・FootIkにチェックを入れると、足が地面にめり込まないようにしてくれます。

では次に、今までのIdle Walk Run Blendはもう不要なので削除して、矢印が同じになるようにしてください。また、新たに作成した"BlendTree"を右クリックして、"Set as Layer Default State"を選択して、最初に遷移されるアニメーションに指定してください。

設定すると、このようになると思います。

各矢印の設定は画像の通りです。


では、BlendTreeをダブルクリックして、アニメーションの設定に入ります。
"BlendTree"をクリックして、インスペクターでMotionの+マークをクリックして、"Add Motion Field"を選択します。

アニメーションをセットしたいので、Projectウィンドウにある、"1H@CombatIdle01"の▼をクリックして展開させ、"1H@CombatIdle01"をBlendTreeのMotionまでドラッグ&ドロップします。

同じ要領で、"1H@Sprint01"もセットします。

すると、先ほど確認したように再生ボタンを押して、Speedの値をいじると立ちポーズから走りに徐々に変化することを確認できます。

では、ゲームを実行して動作確認しましょう。

以上で、アニメーションの変更が完了しました。

宣伝

「1か月間 Unityの学習サポート」をするサービスを自分はココナラでしているので、もし興味のある方はチェックして頂けると嬉しいです。
https://coconala.com/services/3027818

Discussion