Unityのスタンダードアセットに含まれるThirdPersonCharacter(名前はEthan)は、今や少し古くなってしまったものの、それでも使い勝手が良く、テスト段階ではたびたび使用するアセットです。アセットのフォルダからSceneビューにドラッグすればすぐに使えるので非常に便利です。

今回は、同じく「スタンダードアセットに含まれる3Dモデルを元にして、ThirdPersonCharacterと同じ設定を行い、ThirdPersonCharacterと同様に操作できる様にする!」という事を実践してみます。

なんでわざわざこんな事をするの?って思うかもしれませんが、以下が実線する理由・目的になります。

実践の目的・理由

  • 自分で3Dキャラの設定をする事で、ThirdPersonCharacterの設定をアレンジできる様になる
  • Blenderなどで自分で3Dキャラを作成した際も同じ様な手順で操作する事ができる
  • 当然のように使用しているThirdPersonCharacterのPrefabsのありがたみを知る

今は、スタンダードアセットに代わる様な新しい公式アセット等も配布されていますが、今回の内容を元に旧スタンダードアセットの設定を新しい公式アセットに適用してみるのも面白いかもしれません。

事前準備・環境設定等

環境設定については特別なものはありませんが、アセットについてはUnityのスタンダードアセットを使用します。
※昨今では古くなったUnityのスタンダードアセットですが、今でも動作確認ではかなり活用できる素材です。

Unityのスタンダードアセットの中からThirdPersonCharacterの素材を使用します。

2つのキャラモデル

この記事では、既にプレハブ化されていてSceneビューにドラッグすればすぐに使用できるアセットを「設定済3Dキャラ」。何も設定されていない3Dモデルを「未設定3Dキャラ」と言う事にします。

  • 設定済み3Dキャラ⇒「Assets >Standard Assets>Characters>ThirdPersonCharacter>Prefabs」にあります。
  • 未設定3Dキャラ⇒「Assets >Standard Assets>Characters>ThirdPersonCharacter>Models」にあります。

両方の素材の違いを確認しながら、3Dモデルを動かせる様にするための手順を確認していきたいと思います。

自分で3Dキャラクターを設定してみよう!

自分で3Dキャラを設定していきましょう。

3Dキャラモデルの準備

まずは「設定済3Dキャラ」「未設定3Dキャラ」を準備していきます。

未設定3Dキャラモデル

まずは未設定3DキャラをSceneビューに配置します。

以下のディレクトリにある「Ethan」というアセットが未設定3Dキャラ(まだ何も設定されていない3Dモデル)になります。

Assets >Standard Assets>Characters>ThirdPersonCharacter>Models

■スタンダードアセットの3Dモデル

■未設定3Dキャラを配置

設定済3Dキャラモデル

次に設定済3DキャラをSceneビューに配置します。

設定済み3Dキャラのありかは、以下のディレクトリのThirdPersonCharacterになります。

Assets >Standard Assets>Characters>ThirdPersonCharacter>Prefabs

■スタンダードアセットのThirdPersonCharacter

これで設定済み設定済3Dキャラ(左)と、未設定3Dキャラ(右)が並びました。

■設定済3Dキャラ(左)と、未設定3Dキャラ(右)

設定済みの3Dキャラモデルは少し黒っぽい色のマテリアルも設定されています。

3Dキャラクターの設定

次に3Dキャラクターの各種設定をしていきましょう。

設定済3Dキャラモデルの設定情報を確認

まずは参考となる「設定済3Dキャラ」のコンポーネント設定から見ていきましょう。こちらが見本設定になります。

■設定済3Dキャラのコンポーネント設定

コンポーネントとして、RidigbodyColliderC#スクリプトが設定されている事が分かります。3Dのキャラモデルとしては基本的なコンポーネントになります。

各コンポーネントの具体的な内容も見ていきましょう。RigidbodyやColliderの各プロパティの値は以下になります。細かい値までは分からなくとも、同様のプロパティ設定をすれば同様に動く事は知っておくと何かと便利です。

■Rigidbody、Colliderの設定値

未設定3Dキャラモデルの設定情報を確認

次に「未設定3Dモデル」の設定情報を確認してみましょう。

こちらは基本的に何のコンポーネントも設定されていない状態で、RigidbodyColliderC#スクリプト等がアタッチされていない状態です。

■未設定3Dモデルの設定情報

設定済3Dキャラと同様にまずは、RigidbodyやColliderを設定しましょう。

いずれもプロパティの値は、設定済み3Dキャラと同じ値(上述)にすればOKです。

Sceneビューも確認してColliderの位置が同じである事を目視で確認しましょう。
※Colliderの位置がどの様に変化しているか実際に見てみましょう。

■設定済3DキャラのColliderの位置

■未設定3DキャラのColliderの位置(初期設定)

未設定3DキャラのColliderの位置修正

設定済み3DキャラのColliderの位置を参考に、未設定3DキャラのColliderの位置を修正しましょう。

■未設定3DキャラのColliderの位置を修正

未設定3DキャラのColliderの位置が変更され、設定済み3DキャラのColliderの位置と同様になった事が分かります。

■未設定3DキャラのColliderの位置が変更された

3Dキャラクターのアニメーション設定

次にアニメーション設定を行います。

こちらも設定済3Dキャラの内容と同じ様にすればOKです。

順番に設定方法を見ていきましょう。

未設定3Dキャラモデルにアニメーターを設定

まずは、未設定3DキャラにAnimator Controllerを設定する方法を試してみます。

■Animator Controllerを設定

コンポーネントのAnimatorのControlloerに作成した「Animator Controller」を設定します。

■「Animator Controller」を設定

このまま一度Gameビューで実行してみます。

そうすると以下の様に未設定3Dキャラが固まったままの状態になってしまいます。。。

■未設定3Dキャラが固まったまま。。。

設定したAnimator Controllerの中身を確認してみましょう。

初期設定では何もアニメーションが設定されていません。なので、アニメーションしないのも当然です。

■アニメーションが設定されていない

アセットの中にあるアニメーションクリップを設定してみましょう。

Entryから矢印を引いてアイドル状態のアニメーションクリップ「HumanoidIdle」を設定します。
※Animator Controllerの細かい使い方等は別途ご説明します。

■アニメーションクリップ「HumanoidIdle」を設定

ここで、もう一度Gameビューで実行してみます。

そうすると、未設定キャラがアイドル状態になりました。ただ、つるんと滑ってしまってますが。。。

■アニメーションクリップを設定した事で、未設定キャラがアイドル状態になる

設定済み3Dキャラの設定内容を参考にして、同じ様な設定にしていきましょう。

設定済3Dキャラモデルのアニメーター設定を参考にする

とりあえず、「アイドル状態のアニメーションクリップ」を設定すると、実行画面でアイドル状態になるという事は分かりました。

設定済3Dキャラのアニメーター設定を参考にして、未設定3Dキャラのアニメーターも同様に設定していきましょう。

各種アニメーションクリップのアセットは以下のディレクトリにあります。

Assets >Standard Assets>Characters>ThirdPersonCharacter>Animation

■各種アニメーションクリップのアセット

設定済3Dキャラのアニメーター設定を参考にしましょう。
※設定済3DキャラのAnimatorコンポーネントのControllerから確認ができます。

また、3Dキャラを操作するためにはC#スクリプトも必要になります。こちらもアセットにあるC#スクリプトを同じようにアタッチしてみましょう。

■AnimatorコンポーネントのController、C#スクリプト設定を参考にする

では、Gameビューで実行してみます。

一応アニメーションしながら動く様になりましたが、何度もジャンプしたり、ちょっと変な動作をします。

■一応アニメーションしながら動く

C#スクリプトのパラメータ設定

よく見てみるとC#スクリプトのパラメータ設定が、設定済3Dキャラと違っていました。

C#スクリプトのパラメータ設定も参考にして、同じように設定してみましょう。

■設定済3DキャラのC#スクリプトのパラメータ設定

C#スクリプトのパラメータ設定も完了した所で、再度Gameビューで実行してみましょう。

今度はしっかりと動きました。

■実行結果

まとめ

今回は結構マニアックな内容になったかもしれません。

ただ、いつもアセットを頼ってばかりだと、どの様な仕組みで3Dキャラクターを操作しているのかが分かりません。この記事を読んでいただく事で、少しは3Dキャラクターが動く仕組みや設定方法が伝われば良いな~と思います。

今回、結局はUnityさんのスタンダードアセットのアニメーションクリップやC#スクリプト、そして細かい設定内容を活用して、それぞれを組み合わせています。

それでも、自分でオリジナルのキャラクターを作成した際や、他のアセットの3Dキャラを動作させたい場合に参考になれば良いなと思います。