Unity:標準アセットのThirdPersonCharacterを改造して通常の移動を歩行に変更

今回はUntiyの標準アセットに含まれる ThirdPersonCharacter を改造。通常移動が走るモーション、左:Shiftキー+移動キーで歩行となっているところを入れ替え、通常移動を歩行に変更してみました。

ThirdPersonController にアタッチされているコンポーネントを確認

Unity の標準アセットから Charactor をインポート。[Project]ウィンドウ > Standard Assets > Characters > ThirdPersonCharacter > ThirdPersonController を選択。[Inspector]ウィンドウでアタッチされているでコンポーネントを確認してみます。

Animator

キャラクターのアニメーションを制御するコンポーネント。[Cull Update Transforms]が設定されていてカメラで描画されていない場合はアニメーションがスキップされます。

Ridgidbody

キャラクターの移動制御

Capsule Collider

キャラクターの衝突判定処理のコライダー。物理マテリアルに ZeroFriction が割り当てられています。

ThirdPersonUserControl (Script)

プレイヤーの入力処理を行うスクリプト。

ThirdPersonCharacter (Script)

キャラクターの移動やアニメーションの制御のスクリプト。旋回速度、ジャンプ力、重力の強さ、移動速度、アニメーションの再生速度などが設定できますね。

スクリプト ThirdPersonUserControl の複製

まずは ThirdPersonCharacter の操作制御スクリプト ThirdPersonUserControl を複製します。
[Project]ウィンドウ > Standard Assets > Characters > ThirdPersonCharacter > Scripts> ThirdPersonUserControlを選択。

メニュー:Edit > Duplicateを選択してファイルを複製。ファイル名をMod_ThirdPersonUserContrに変更。

複製したスクリプトファイルは今回の作業用フォルダに移動しました。

スクリプト Mod_ThirdPersonUserControl の編集

スクリプト Mod_ThirdPersonUserControl の改造内容は下記の3点になります。

  • クラス名を Mod_ThirdPersonUserContr に変更
  • 関数 FixedUpdate() の処理内にキー入力条件を追加
  • 左:Shiftキー入力時の動作を[歩く] →[走る]に変更

編集したスクリプトコード。一部理解できていない部分がありますがコメントを付けました。

キャラクターのセットアップ

Unity の標準アセットに含まれている ThirdPersonCharacter の3Dモデル Ethan はマテリアルカラーがグレーになっていますが、Asset Store で提供されている サンプルアセット Standard Assets for Unity 4.6 ではマテリアルカラーが設定された Ethan が用意されています。

このアセットはアセットストアでの取り扱いが終了しました。アセットを新規に購入あるいは無償取得することはできません。取り扱い終了前にアセットをダウンロード済みのユーザーは、ローカルに保存されている場合に限りインポートすることができます。

サンプルアセット Standard Assets for Unity 4.6 は名前の通り古いバージョンの Unity 用アセットなので、テクスチャファイル EthanAlbedoSpecular.png のみインポートして使用してみることにしました。

マテリアルは Standard Assets > Characters > ThirdPersonCharacter > Materials > EthanGrey を複製し名前を EthanColor に変更。

マテリアルの設定はこのようにしました。PNG形式のテクスチャファイルにはアルファチャンネルが含まれているので Smoothness 強度の Source としました。

[Project]ウィンドウ > Standard Assets > Characters > ThirdPersonCharacter > Prefabs > ThirdPersonController を複製。名前をThirdPersonController Color に変更。作成したマテリアル EthanColor を割り当てました。

標準の Ethan と色付きの Ethan を並べて[Game]ビューで確認するのこのような感じ。

コンポーネントの設定

複製したプレハブ ThirdPersonController Color のコンポーネントを変更します。ThirdPersonUserContr を削除して Mod_ThirdPersonUserContr をアタッチします。

シーンのセットアップ

以前の記事で使用した室内のオブジェクトを用意してシーンを作成。

壁や床のテクスチャはUnityのアセットストアの無料テクスチャYughues Free Architectural Materials を使用しています。

プレハブ ThirdPersonController Color をシーンに配置。標準アセットの Utility に含まれている SimpleMouseRotator を使用して回転用オブジェクトを作成。子階層にMain Camera を設定しました。

WebGLビルド

今回の内容をWebGLでビルドしてみました。画像クリックでファイルがダウンロード、再生されます。(ダウンロードサイズ:約30MB)

  • キャラクター移動:前 W、左 A、後 S、右 Dキー
  • 走る:左:Shiftキー + 移動キー
  • ジャンプ:Spaceキー
  • しゃがみ:Cキー
  • 視点移動:マウス移動