[初心者向け]Unityの3Dキャラクターのセットアップ
3Dキャラクターをアニメーション付きで動かせるようにセットアップする方法と、カスタマイズ方法を解説します。
アセットのインポート
Unityが公式で配布している3Dキャラクター用のアセットが優秀なので、まずはそれをインポートします。
インポートの仕方は、僕が前に書いたこちらの記事を参考にしてください。
基本的には、"DownLoad","Import","Yes"を押していけばいいです。
それと、入れ替え用の3Dキャラクターアセットもインポートします。
また、無料の地形アセットをインポートします。
アセットを配置する
では、まずはサンプルのマップを読み込みます。
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周りについてはこちらの記事で解説しています。
ここでは、その記事では解説していない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の作成
サンプルとして、次の無料のアニメーションをインポートしてください。
次の階層に、歩行や走りのアニメーションがあることが確認できます。
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の学習サポート」をするサービスを自分はココナラでしているので、もし興味のある方はチェックして頂けると嬉しいです。
Discussion