【Unity2021】Starter Assetsでユニティちゃんを動かす

CinemachineとInput Systemを使ってユニティちゃんのTPSを作りたいんだけど、手軽にできる方法はないの~?

Starter Assetsユニティちゃんアセットを組み合わせれば比較的楽に実現できるわ!

Starter Assetsを使ってユニティちゃんを動かす方法の紹介です。

本記事の内容を実践すると、三人称視点でユニティちゃんを動かすことが可能になります。

また、Starter Assetsを用いることで、CinemachineInput Systemなど最新の仕組みで作れるようになるため、本格的なゲーム開発への適用もしやすくなるというメリットもあります。

本記事では、アセットのインストールから手順を解説し、動画のようにユニティちゃんを操作できるようにしていきます。

この作品はユニティちゃんライセンス条項の元に提供されています

動作環境
  • Unity2021.1.25f1
  • Cinemachine2.7.9
  • Input System1.0.2

前提条件

予め空のUnityプロジェクトが開かれているものとします。

この状態からセットアップしていく手順を解説していきます。

Starter Assetsのインポート

以下アセットストアより、Starter Assets – Third Person Character Controllerをダウンロードし、インポートします。 [1]

リンク先ページの以下のような青いボタンをクリックします。

ボタンをクリックすると、UnityエディタのPackage Managerウィンドウが開きます。

左のアセット一覧から、Starter Assets – Third Person Character Controllerを選択し、Importボタンをクリックしてアセットをインポートしてください。一覧の表示されない場合は、動画のように検索して該当アセットを表示させます。

インポートに成功すると、次のようなメッセージが表示されることがあります。

これは、Input Systemパッケージがインストールされた際に表示される画面で、新しいInput Systemを有効にして古いInput Managerを無効化するかどうかを尋ねるメッセージです。

今回はInput Systemしか使わないため、Yesボタンをクリックし、Unityを再起動します。

ここまでの手順を成功させると、次のようにAssetsフォルダ配下にStarterAssetsフォルダが追加されます。

ユニティちゃんアセットのインポート

ユニティちゃんのキャラクターモデルをダウンロードし、インポートします。

以下ユニティちゃん公式サイトにアクセスします。

右上のDATA DOWNLOADボタンをクリックし、利用規約に同意するとユニティちゃんアセットのダウンロード画面に進みます。

本記事では、ユニティちゃん 3Dモデルデータを使用することとします。Unity2021では、一部輪郭表示が正しくされないことがあるため、ユニティちゃんシェーダー (Unity 5.4/5.5β 対応版)も必ずダウンロードしてください。 [2]

ダウンロードしたら、ユニティちゃん 3Dモデルデータユニティちゃんシェーダー (Unity 5.4/5.5β 対応版)にUnityエディタのProjectビューにドラッグ&ドロップしてインポートします。必ずこの順番でインポートする必要があることにご注意ください。 [3]

ドラッグ&ドロップすると、Import Unity Packageウィンドウが表示されるので、そのままImportボタンをクリックします。

ここまでの手順を実施すると、Assetsフォルダ配下にUnityChanフォルダが追加されます。

コンパイルエラーの修正

ここまでの手順を実施すると、次のようなエラーが表示されることがあります。

Assets\UnityChan\Scripts\AutoBlink.cs(8,23): error CS0234: The type or namespace name 'Policy' does not exist in the namespace 'System.Security' (are you missing an assembly reference?)

これは、.NET Standard 2.0を使用している際に発生するコンパイルエラーで、System.Security.Policy名前空間が認識されないためです。

この場合、トップメニューのEdit > Project Settings…を選択してProject Settingsウィンドウを開き、Player > Other Settings > Configuration > Api Compatibility Level*の項目を.NET 4.xに変更してください。(Unity2021.2.0f1以降の環境では.NET Frameworkに変更してください)

選択すると再コンパイルが走り、エラーが消えます。

サンプルシーンの確認

以下パスに格納されているシーンファイルを開きます。

Assets/StarterAssets/ThirdPersonController/Scenes/Playground.unity

再生ボタンをクリック(またはCtrl + Pキー)して、三人称視点のデモがプレイできるようになったら成功です。

動作を確認出来たら、シーンをもう一度再生ボタンをクリック(またはPキー)してシーンを停止します。

本記事では、シーンを複製して作業を進めていくこととします。Ctrl + Shift + Sキーでシーンファイルを別名で保存します。

注意

元のシーンを編集した状態で再度Starter Assetsをインポートすると、作業データが上書きされて消えてしまいますのでご注意ください。

ユニティちゃんモデルへの差し替え

ここからは、ユニティちゃんモデルに差し替えて動かせるようにしていきます。

手順が長いけど、頑張ってついてきてね。一つ一つ分かるように説明していくね。

ユニティちゃんPrefabの配置

シーンにユニティちゃんオブジェクトとなるPrefabを配置します。

本記事では、揺れもの制御のついたユニティちゃんモデルで動かすこととします。次のパスのPrefabをヒエラルキービューにドラッグ&ドロップで追加してください。

Assets/UnityChan/Prefabs/unitychan_dynamic.prefab

ユニティちゃんのアニメーション設定

配置したユニティちゃんオブジェクトを選択し、AnimatorコンポーネントのControllerを以下パスのものに差し替えます。

Assets/StarterAssets/ThirdPersonController/Character/Animations/StarterAssetsThirdPerson.controller

差し替えは、ドラッグ&ドロップで行います。

また、Apply Root Motionのチェックを外しておきます。 [4]

不要スクリプトの無効化

ユニティちゃんオブジェクトにアタッチされている以下コンポーネントを無効化します。

  • Idle Changer
  • Fade Update
  • Random Wind

これらのコンポーネント類を無効化する理由は、画面上に該当コンポーネントのUIを表示させなくするためです。

必要コンポーネントのコピー&ペースト

PlayerArmatureオブジェクトにアタッチされているコンポーネント類を新しいユニティちゃんオブジェクトにコピー&ペーストで適用していきます。

対象となるコンポーネントは以下の5つです。

  • Character Controller
  • Third Person Controller
  • Basic Rigidbody Push
  • Starter Assets Inputs
  • Player Input

一部はコピー&ペースト以外に値を修正する必要があるため、一つずつ手順を解説します。

Character Controller

コピー&ペーストのみでOKです。

元オブジェクトのCharacter Controllerコンポーネントの右クリックからCopy Componentを選択してコピーします。

その後、コピー先のユニティちゃんオブジェクトのインスペクタで右クリックしてPaste Component As Newを選択してペーストします。

Third Person Controller

コピー&ペーストのほか、値の修正が必要です。

同じ要領でコピー&ペーストし、コピー先のThird Person ControllerコンポーネントのCinemachine > Cinemachine Camera Target項目をユニティちゃんオブジェクト配下のLookPosに上書きします。

Basic Rigidbody Push、Starter Assets Inputs

これらはコピー&ペーストだけでOKです。

Player Input

これもコピー&ペーストのみで良いですが、Third Person Controllerをアタッチすると自動的に追加されます。 [5]

そのため、ペースト時は既に追加されているPlayer Input上で右クリックしてPaste Component Valuesを選択し、設定を上書きします。

Playerタグの設定

ユニティちゃんオブジェクトのタグPlayerに設定します。

これは、Cinemachineが障害物とみなさないタグにPlayerが設定されており、Playerタグが設定されていないとプレイヤー自身が障害物とみなされてしまうためです。

レイヤーの設定

Defaultレイヤーのままだとプレイヤー自身が地面判定されてしまうため、Default以外のレイヤーに設定します。

例では、Playerレイヤーを新しく作って設定することとします。

子オブジェクトも含めてすべてPlayerレイヤーに設定することとしました。

元のプレイヤーオブジェクトを無効化

元のPlayerArmatureオブジェクトは不要なため、非アクティブにします。二度と使わないのであれば、削除でも問題ありません。

カメラの追従対象の差し替え

Cinemachineカメラが追従する対象を新しいユニティちゃんオブジェクトに切り替えます。

PlayerFollowCameraオブジェクトCinemachineVirtualCameraコンポーネントFollowに、ユニティちゃんオブジェクト配下のLookPosを指定します。

実行結果

ここまでの手順を成功させると、次のようにユニティちゃんモデルで操作できるようになります。

もし正しく動作しない場合は、手順に誤りがある可能性が高いため、もう一度手順を見直してください。

さいごに

Starter Assetsでユニティちゃんモデルを動かす方法について解説しました。

モデル差し替え部分は少々面倒ではありますが、ほかのキャラクターモデルに対しても同じ要領で差し替えが可能です。

ここまでの手順が分かれば、独自にカスタマイズもしやすくなることでしょう。