今回は前回までに作成した村人の移動と会話機能をプレハブにし、村人のモデルとAnimatorControllerだけを変えて量産出来るようにしていきます。
また村のBGMを付けていきます。
村のBGM等の音声は村以外のワールドマップだったり戦闘だったりを作成した後に一気に一つの記事で付けようかなと思ったんですが、必要に応じて付けることにしました。
前回は村人と会話が出来るようにしました。
ユニティちゃんのRPGを作ってみようの他の記事は
から見ることが出来ます。
使用するアセットをインポートする
この記事で使用するアセットを先にインポートしておきます。
Ctrl+9キーを押してアセットストアを開き検索窓に「lesserimp」と入力して出てきた無料の3Dモデルをインポートします。
次に検索窓に「rpggamemusic」と入力して出てきた無料のRPG用の音楽をインポートします。
村人の移動と会話機能をプレハブにする
前回までに作成した村人の移動と会話機能をプレハブにして他の村人を作成する時に再利用出来るようにします。
まずは前回Villagerから複製して配置したVillager(1)は選択してDelキーを押して削除します。
村人はヒエラルキー上でVillager以下で移動機能やキャラクターの3Dモデル、会話の範囲等を持っているのでそれをプレハブにします。
まずはAssets/RPGのフォルダ内で右クリックからCreate→Folderを選択し、名前をPrefabsとします。
同じようにPrefabsの中にCharactersフォルダを作成します。
ヒエラルキーのVillagerゲームオブジェクトを選択しAssets/RPG/Prefabs/Charactersフォルダ内にドラッグ&ドロップします。
これでVillagerがプレハブになりました。
Assets/RPG/Prefabs/Charactersの中にあるVillagerプレハブを選択し、インスペクタでOpen Prefabボタンを押します。
するとプレハブの階層がヒエラルキー上に表示されます。
Villagerの移動機能やコライダはVillager自身、会話の範囲やユニティちゃんが侵入したかどうかはSearchAreaにコライダとスクリプトを取り付けているのでキャラクターの見た目とアニメーションを設定しているElf自信を置き換えれば見た目が違う村人を量産出来ることになります。
今回はVillagerプレハブにこのままAnimatorを持ったElfをそのままにしますが、削除してヒエラルキー上に配置してインスタンス化した後に3DモデルとAnimatorを設定することも出来ます。
赤い四角の矢印部分を押して通常のヒエラルキーに戻します。
Assets/RPG/Prefabs/Characters/Villagerプレハブをヒエラルキー上のVillagersにドラッグ&ドロップして配置します。
配置すると名前がVillager(1)となっているので選択した状態でF2キーを押し名前をVillager2とします。
Villager2を選択した状態で右クリックからUnpack Prefab Completelyを選択しプレハブとのリンクを解除します。
Villager2の子要素のElfを選択しDeleteキーを押して削除します。
Assets/LesserImpのLesserImpPrefab.prefabファイルをAssets/RPG/Charactersフォルダに移動させます。
Assets/RPG/Animatorsフォルダ内で右クリックしCreate→Animator Override Controllerを選択し、名前をLesserImpとします。
Animator Override Controllerは既に作成しているAnimator Controllerの状態や遷移はそのままでアニメーションクリップだけを変更することが出来ます。
そこでLesserImpアニメーターオーバーライドコントローラーを選択し、インスペクタで上書きするControllerにElfを設定します。
アニメーションを変更したい場合はアニメーションクリップを選択して設定してください。
Assets/RPG/Characters/LesserImpPrefabのAnimatorに今作成したLesserImpを設定します(インポートしたパッケージの中のLesser Impを設定しないようにしてください)。
モデルとアニメーターを変更しただけで同じように動く村人の作成が出来ました。
巡回ポイントを新たに作成する
村人は二人になりましたが、巡回ポイントが同じです。
そこでPatrolPointsParentを選択した状態でCtrl+Dキーを押して複製し、名前をPatrolPointsParent2とし子要素のPointの位置をずらして違う場所を巡回出来るようにします。
二つ目の巡回ルートは上のように3つの位置にしました。
またPatrolPointsParent2の子要素のアイコンは青くしてPatrolPointsParentの位置と判別出来るようにします。
Villager2のインスペクタのVillagerScriptでPatrolPointsParentにPatrolPointsParent2をドラッグ&ドロップし、ConversationにVillagerBを設定します。
これで村人の移動機能等をプレハブにし、それをヒエラルキー上に配置してモデルとAnimatorを変えるだけで村人を量産出来るようになりました。
村にBGMを流す
ここまででほぼ村が出来上がりましたが、音楽が流れていないので少し寂しいですね。
そこでBGMを流すことにします。
音楽を流すにはAudio Sourceコンポーネントが必要になりそこに音声ファイルを設定して音声を流します。
Audio Sourceでは2Dと3Dの音声設定があり2Dにするとどこにいても音声が聞こえ、3Dにすると設定しているオブジェクト周りに音声が流れます。
またAudio Sourceで流した音声を聞き取る為にはAudio Listenerコンポーネントが必要になり、デフォルトでMain Cameraに設定されています。
今回はBGMを流すだけなので、Main Cameraゲームオブジェクトを選択し、インスペクタのAdd ComponentからAudio→Audio Sourceを選択し取り付けます。
Main CameraにはAudio Listenerが取り付けてありますので、Main Cameraで音声を流しそのまま音声を聴けるということになります。
Main CameraのインスペクタでAudio Sourceの設定を変更します。
AudioClipにAssets/RPG Game Music/Fame Townを設定します。
Play On Awakeにチェックを入れシーンが開始されたら直ぐに音声が再生されるようにします。
Loopにチェックを入れ音声がループして再生されるようにします。
Spatial Blendで左側にドラッグし2D音声にします。
これで音声の設定が終わりました。
Unityを実行して村人の巡回と村のBGMの確認をしてみましょう。
上のようになりました。
終わりに
今回で村が完成しました。
次回はワールドマップのシーンを作成し、村とワールドマップのシーンの遷移が出来るようにしていきます。
この作品はユニティちゃんライセンス条項の元に提供されています