今回はUnityの有料3Dアセットを使用して3Dのキャラクターを動かしてみます。マップもアセットに含まれるものを使用します。
Unityのアセットストアでは、クオリティの高いアセットを購入する事ができ、実際に様々なゲームで活用されています。Unityによるゲーム開発・映像制作等では様々な素材を用意する必要がありますが、アセットを上手に活用する事で、素早くクオリティの高い作品を作る事ができます。
まずは今回使用する有料3Dアセットを紹介します。
■Synty Store「POLYGON – Town Pack」
Syntyのアセットは、Unityのアセットストアでも特に大人気のアセットで、キャラクター素材や地形素材等、3Dゲーム開発に役に立つものがたくさん入っています。
ちなみに、Unityのスタンダードアセットに含まれる3Dキャラクターを操作した時の記事があるので、こちらも読んでいただけると理解が深まると思います。
■Unityの3Dキャラクターのアセットを操作
これまでにUnityでゲームを作成するための方法を色々と紹介していますが、今回はUnityでプレイヤーキャラクター(主人公)を配置して、コントローラーで操作をしてみたいと思います。やはりキャラクターを操作できる様になると …
有料アセットを使って3Dキャラクターを動かす
ではさっそく有料アセットを使って3Dキャラクターを動かしてみましょう。
以下の様な流れで3Dキャラクターを動かすまでを進めていきます。
- 事前準備
- 簡単なマップ作成
- 3Dキャラクターの配置
- キャラクターを動かす準備
- 実際にキャラクターを動かしてみる
事前準備
今回は3Dのキャラクターアセットを使用しますので、プロジェクト作成時は3Dテンプレートを使用しましょう。
次に、アセットをインストール&インポートします。
インポートが完了すると「Assets」フォルダの下に「PolygonTown」のフォルダが作成され、その中に各種アセットが保存されます。
ちなみに、「Models」というフォルダにも様々な素材が入っていますが、これらは大元のモデルデータになっていると思います。
基本的には「Prefabs」というフォルダに入っているものを使用します。Prefabs配下の方が基本的な設定がされたデータのはずです。
簡単なマップ作成
マップもPolygonTownのアセットを使用します。まずは簡単なマップを作成しました。
ちなみに、マップを作成する際は各アセットの位置に気を付けましょう。
Sceneビューにドラッグすれば、自動で配置されますが、なるべくTransformのPositionが「X:0、Y:0、Z:0」になっている方が後々が楽です。
Transformコンポーネント右側の「設定」から「Reset Position」を選択すると自動でPositionを「X:0、Y:0、Z:0」にしてくれます。
3Dキャラクターの配置
次にキャラクターを配置しましょう。
Assets > PolygonTown > Prefabs >Characters の中にある好きなキャラクター素材を選択して、HierarchyウィンドウかSceneビューにドラッグしましょう。
Sceneビューにキャラクターが配置されます。
ちょっと画面が暗いですね。。。
Sceneビューが暗い場合
キャラクターを配置したもののちょっと暗いですよね。この様な場合は、
ツールバーの Window > Rendering > Lighting Settings をまず選択します。
Lighting Settingsのウィンドウが開きますので「Auto Generate」にチェックを入れます。
Sceneビューが明るくなり、キャラクターも良く見える様になりました。おじさんのキャラクターが良く見えますね。
キャラクターを動かす準備
次にキャラクターを動かしてみます。
自分でコーディングをして動かせる様にしたい所なのですが、今回はUnity公式のStandard AssetsのThirdPersonCharacterにドッキングさせる形で動かしてみたいと思います。
動かし方は色々とあるのですが、Synty公式の動画でまさにStandard AssetsのThirdPersonCharacterを使用する方法が紹介されていたので、同じ方法でドッキングしてみます。
■Synty公式の動画
※非常に簡単かつ良いクオリティで動きます。
Standard AssetsのThirdPersonCharacterを用意
まずはUnity公式のStandard Assetsをインストール&インポートします。Assetsフォルダ配下にStandard Assetsフォルダができあがります。
Assets > Standard Assets > Charactres > ThirdPersonController> Prefabs配下のThiedPersonControllerを選択して、HierarchyウィンドウかSceneビューにドラッグします。
SceneビューにThirdPersonControllerが配置されました。
ちなみに、Unityのバージョンによって、Standard Assetsが動作しない事があります。
その場合の対応方法は以下の記事を参考にしてみて下さい。(Terrainに関する記事ですが、Standard Assetsを動作させる方法が載っています。)
今回はUnityのTerrainを使って地形にペイント(色を塗る)をしてみます。 地形の造形を作ったりしてきましたが、草原や土の色を塗る事でゲームなどでも活用できる地形が完成します。ここまで来ればゲームの素材としても使え …
ThirdPersonCharacterを非表示にする
Hierarchyウィンドウ > ThirdPersonControllerを選択すると、ThirdPersonControllerの子オブジェクトが表示されます。
ThirdPersonControllerの子オブジェクトの「EthanBody」「EthanGasses」を選択します。
※ShiftもしくはCtrlを押しながら選択すると両方選択できます。
Inspectorウィンドウの表示・非表示チェックボックス(下記のチェックボックス)を外します。
※対象オフジェクトを表示・非表示にするチェックボックスです。
「EthanBody」「EthanGasses」が非表示になりました。おじさんキャラクターだけが見えている状態です。
■「EthanBody」「EthanGasses」(ThiedPersonController)が非表示になる
ThirdPersonControllerにドッキングする
次に、ThirdPersonControllerに、おじさんキャラクターをドッキングしてみます。
これで、ThirdPersonControllerのモーションや操作を踏襲しつつ、おじさんキャラクターを操作できるはずです!
以下の画像の様に、Hierarchyウィンドウで赤枠のオブジェクト(おじさんキャラクター)を青枠のオブジェクト(ThirdPersonController)にドラックしましょう。
■おじさんキャラクターをThirdPersonControllerにドラッグ
ThirdPersonControllerのInspectorにて、Animatorコンポーネント > Avatarの設定をします。
CharactersAvatarを選択します。
座標の位置情報の調整が必要な場合
これで動かせるぞ!と思ったらちょっと要注意です。
ThirdPersonControllerの位置と、おじさんキャラクターの位置を調整しましょう。
親オブジェクトになるThirdPersonControllerの位置はそのまま、子オブジェクトになるおじさんキャラクターの位置はPositionを「X:0、Y:0、Z:0」にして下さい。
子オブジェクトは、基本的に親オブジェクトの相対座標を指定する事になるので、「X:0、Y:0、Z:0」でOKなのです。
※ちなみに、Projectから直接ThirdPersonControllerにドラッグした場合は基本的に「X:0、Y:0、Z:0」になるはず。
■ThirdPersonControllerの位置はそのまま
■おじさんキャラクターの位置はPosition「X:0、Y:0、Z:0」
キャラクターを動かしてみよう
ではさっそくキャラクターを動かしてみましょう!
以下の様に無事に動きました!元気なおじさんですね。
3Dプレイヤーキャラクターをカメラで追従してみる
上記の状態で操作するだけでも十分に楽しいのですが、gameカメラを近づけて操作をしてみると、おじさんキャラクターが左右に移動した際に、カメラから見切れてしまいます。
上記で紹介しているSynty公式の動画では、3Dのプレイヤーキャラクターをカメラで追従する方法も載っていましたので、それを試してみます。
Standard Assetsの「FreeLookCameraRig」を使用します。
FreeLookCameraRigをHierarchyウィンドウにドラッグします。
FreeLookCameraRigを選択して、InspectorウィンドウのFreeLookCam(Script)コンポーネントにTargetという項目があります。
このTargetにThirdPersonControllerを設定します。
■TargetにThirdPersonControllerを設定
デフォルトのカメラである「Main Camera」の機能はオフにします。これで準備完了!
実際にGameモードで実行してみると、カメラがおじさんキャラクターを追従しています!
Syntyのアセットで色々と遊んでみる
最後にSyntyのアセットを追加したりして色々と遊んでみたいと思います!
他のオブジェクトも配置してみる
簡単なマップとおじさんキャラクターだけを使用してきましたが、他のオブジェクト(木や柵など)も配置してみます。
配置の方法はおじさんキャラクターを配置した時と同じです。
各オブジェクトにコライダー(Collider)が設定されているので、しっかりと当たり判定があります!
素晴らしい!どんどんゲームの世界を作っていけますね!
プレイヤーキャラクターを変更してみる
これまで、おじさんをプレイヤーキャラクターにしてきましたが、プレイヤーキャラクターを(無理矢理)変更してみましょう。
PolygonTown > Prefabs > Vehiclesに車のアセットがあるので、これをプレイヤーキャラクターに設定してみます。
おじさんキャラクターを設定した時とほぼ同じ手順ですが、今回はProjectウィンドウから直接HierarchyウィンドウにあるThirdPersonControllerへとドラッグします。(Synty公式で紹介されているのはこの手順ですね。)
■車のアセットをThirdPersonControllerへとドラッグ
車のアセットの場合はThirdPersonControllerのアニメーションを適応させる事はできない(知る限りは)ですが、ThirdPersonControllerの操作機能だけは使用できます。
おじさんキャラクターのオブジェクトはオフにして、車のアセットだけを見える状態にしましょう。
これでGameモード実行すると、、、車を動かす事ができます!感動です!
まとめ
今回はSyntyの有料3Dアセットを活用して、Unity上で3Dキャラクターを動かすという事を実践してみました。
■3Dキャラクターを動かしてみた
- 事前準備
- 簡単なマップ作成
- 3Dキャラクターの配置
- キャラクターを動かす準備
- 実際にキャラクターを動かしてみる
■3Dプレイヤーキャラクターをカメラで追従してみた
■Syntyのアセットで色々と遊んでみた
クオリティの高いアセットを活用すれば、ゲーム自体のクオリティもどんどん高くなります。
※Syntyのアセットは扱いやすくて素晴らしいものが多いですね。人気アセットになっている理由が分かります。
実際に3Dのゲームや映像等を作成する際に参考にしていただければと思います!