今回の記事はUnityで3Dエンドレスランゲームを制作する講座の第2回目です。
前回はゲームの仕様の解説とプロジェクトとアセットの準備を行いました。
前回の記事:
今回は実際にランゲームを走る3DモデルキャラクターをUnityで作成していきます。
アニメーションも設定し、走る、ジャンプするなどの動きも実装しましょう。
3Dランゲームで使うキャラクターを作ろう
さあ、いよいよ3Dランゲームに使うキャラクターを作っていきます。まず、モデルをシーンに配置しましょう。
モデル(Assets → Supercyan Character → Models → animal_people_wolf_1)を以下の図のようにHierarchyにドラッグ&ドロップします。
このオブジェクトにはキャラクターの頭部や体のパーツが含まれています。
アセットには既に色付けされたキャラクターも含まれていますが、ここではパーツから自分たちのキャラクターを作っていきましょう。
まずは矢印をクリックしてオブジェクトをHierarchy上で展開します。
最初の子オブジェクトであるanimal_people_wolf1を選択すると、インスペクタにSkinned Mesh Rendererコンポーネントが表示されます。
ここのMaterialsを使ってモデルに色を付けていきましょう。
Projectウィンドウで、Assets → Supercyan Character → Materials → High Qualityの中にあるマテリアルを探します。
Hierarchyで子オブジェクトのanimal_people_wolf1を選択し、動物のボディマテリアル(animal_people_wolf_supercyan_material_body)をMaterialsの0番目の要素にドラッグ&ドロップします。
1番目の要素に頭部素材(animal_people_wolf_supercyan_material_head)をドラッグ&ドロップして頭部も同様に色付けします。
**注意:このゲームを携帯ゲーム機向けに作るつもりなら、High Quality material**は重たいので使わない方がよいでしょう。
そしてCtrl+Sで定期的にシーンを保存することを忘れないでください。
また、Ctrl+Sで定期的に編集したシーンを保存することを忘れないでください。
このアセットにはアクセサリーも付属しており、それらをモデルに取り付けるためのスクリプトも用意されています。
例えば帽子やバッグなどを追加したい場合は、Project画面で(Prefabs > Supercyan Character Pack Animal People Sample > Prefabs > WithAccessoryLogic)でアイテムを見つけ、Hierarchy内のキャラクター内にドラッグ&ドロップします。
次に、Project画面内のアセット → Supercyan Character → Scripts → Accessory Wear Logic.csのスクリプトを見つけ、キャラクターのインスペクター画面にドラッグ&ドロップし、新しいコンポーネントに設定します。
コンポーネント上で、SkinnedMeshRendererコンポーネントを持つキャラクターのオブジェクトをCharacter Rendererの項目にドラッグ&ドロップします。ボタンをクリックし、要素0に着せる用のゲームオブジェクトをhierarchy画面からドラッグ&ドロップします。
インスペクタ画面でこの3Dモデルの名前を “Character “に変更し、CharacteオブジェクトをプロジェクトフォルダのPrefabsにドラッグ&ドロップし、プレハブとして保存します。
もし保存時にOriginal Prefabとして保存するかPrefab Variantとして保存するか聞かれたらOriginal Prefabを選びましょう。
プレハブとはプロジェクト内で再利用することができるオブジェクトのことです。
ここからはシーン内のキャラクタではなく、キャラクタのプレハブに対して変更を行っていきます。
保存したオブジェクトをダブルクリックすると、プレハブが表示されます。
プレハブモードでオブジェクトの中身を変更すれば、その変更がシーン内にある同一オブジェクトすべてに適用されます。シーン内に多くのオブジェクトがある場合や、同じプレハブのインスタンスが多数ある場合でも一気に変更を行えるとても便利な機能です。
また、シーン内オブジェクトを編集した後、プレハブにその修正を適用する方法も用意されています。以下の画像のようにUnityエディタのインスペクター画面でプレハブにしたオブジェクトでだけ表示されるOverridesの項目を選択。Apply Allを選択すればOKです。これによりシーン内のキャラクタで作業を続け、プレハブへ変更を上書き反映させることができます。
Animator機能を使って3Dランゲームのキャラクターを走らせよう
AnimationフォルダにAnimatorを作成します。Project画面で右クリックして→ Create → Animator Controllerを作成しましょう。
Animator Controllerの名前は好きなように変更できます。
作成したオブジェクトをCharacterのInspectorにドラッグします。
ここで作ったAnimatorコンポーネントは3Dモデルのアバター上で動作します。
Assets → Supercyan Character → Animations → common_people@t-poseを探して矢印をクリックして展開します。人型アイコンのアバターをキャラクターのAnimatorのAvatar領域にドラッグ&ドロップします。
モデルのプレハブで作業するか、変更を上書きすることを忘れないでください。
次に、Controllerプレハブをダブルクリックします。Animatorタブが開き、いくつかのステートが表示されます。
アセットが提供するアニメーションに応じて、キャラクタのステートを作成します。アニメーションは、インポートしたアセットのフォルダ、通常は Animations フォルダにあります。
このアセットでは、アニメーションはFBXファイルの中にあります。FBXの矢印をクリックして展開し、三角形マークを選択してCtrl+Dを押すことで、アニメーションのみを抽出できます。
Runアニメーションで試してみましょう。取り出したアニメーションを Animations フォルダにドラッグ&ドロップします。
同じことをIdle、Jump-up、Jump-downアニメーションオブジェクトについても行ってみましょう。
(操作手順の一例を早送りで示しておきます)
下図のようにRun アニメーションを Animator パネルにドラッグ&ドロップします。
新しいステートが表示され、Entryステートに接続(トランジション)されます。
これが最初のステートであるため、「Default state」になります。ゲーム内でキャラクターが作成されると、すぐにこのステートに入り、このアニメーションを再生し始めます。
Idle, Jump-up そして Jump-downのアニメーションをAnimatorの中にドラッグ&ドロップします。
また、各状態を表すノードは自由に移動させることができます。今回は以下のような形に並べて整理しました。
Runステートを右クリック→Make Transitionを選択して、矢印をJump-upステートにつなげます。
次に、Jump-upステートからJump-downステートへのトランジションをもう1つ作ります。
モデルによっては、ジャンプアニメーションのスタートから終わりまでを含んでいるものもありますが、このモデルでは飛び上がるアニメーションと着地するアニメーションの2つをつなげなければなりません。
この一連のアニメーションを終了するために3つ目のトランジションをJump-downステートからRunステートに向けて作成しましょう。仕上がったトランジションの関係図は以下のようになります。
さらに、アニメーターパネルでパラメータータブを選択します。+マークをクリックし、Trigger パラメータを作成しましょう。
このパラメータの名前をa_Jumpとします。このトリガーの条件が起動するたびに、キャラクタにジャンプのアニメーションを行わせます。
まずはRunステートからJump-upステートへのトランジションになっている矢印をクリックします。
そしてインスペクタの「Conditions」の欄で「+」をクリックすると、a_Jumpが自動的に追加されます。
このトランジションでは、Has Exit Timeを解除し、待ち時間なく即座にアニメーションが始まるようにしておきます。
全く同じにする必要はないですが、各自この後で行うアニメーションテストで違和感を感じない設定に調節しておきましょう。
変更したアニメーションをテストしてみよう
UnityのSceneエディタに戻って、キャラクターを選択し、Gameビューで見えるように少しy座標を上に持っていきましょう。移動ツールでY軸をドラッグするか、Inspetctor画面のTransformの値を変更すればOKです。
次に、CameraオブジェクトのTransformも変更し、キャラクターを映りやすくします(この場合、トランスフォームY = 1、Z = -1)。
ここまでできたら、Unityエディターの再生ボタンを押してください。キャラクターはRunのアニメーションを繰り返すはずです。
Animatorパネルに入り、HierarchyでCharacterを選択します。
Triggerパラメータを有効にして、ジャンプアニメーションが正しく動作するか確認してください。
動作確認を動画で行うと以下のようになります。
ゲーム開発では何かを開発し終わったら次の開発に移る前に、このような動作テストを定期的に行うようにしましょう。
まとめ
今回は3Dモデルアセットを利用してプレイヤーキャラクターの作成、パーツ設定、色付けなどを行いました。
また、アニメーションのコントロールを行いステートを遷移させ、走る→ジャンプするという3Dランゲームに必要なアクションを構築しました。
次回はこのキャラクターが走るフィールドマップを作成していきます。
次の記事:
コメント