ゲームを仕上げよう!  
前回 の記事ではゲームの戦略性を加えるためにプレイヤーと敵の位置関係を表すレーダー画面を追加しました。レーダー画面を追加することによりプレイヤーと敵の位置が分かり、どういう順番で敵を倒していけば速いタイムが出せるかという戦略性が加わったことで、よりゲームが面白くなりました。  
さて、この連載も今回で最後です。ゲームを完成させたいと思います。このゲームに足りないものは何でしょうか? まず一つはBGMです。BGMはなくてもゲームとして成立しますが、BGMがあるとゲームの雰囲気がぐっと変わります!  
もう一つは弾丸の軌道が見えにくいことです。バズーカで弾を打った際に弾がどういう軌道で飛んで行くのかがよく見えないので、弾がクマに当たってもいまいち充実感がありません。 
そこで、今回はBGMと弾丸の軌道表示を追加したいと思います。 
BGMを再生するには?  
BGMを再生するために必要なことは、
BGM用の音楽ファイルを用意する 
UnityのAudio Source機能でBGMの設定をする 
 
です。スクリプトのコードを書かなくてもBGMを再生することができます。スクリプトから音楽ファイルを再生する方法はDay3 とDay5 で行ったので、今回はスクリプトのコードを書かずに音楽を再生する方法でやってみましょう! 
アセットストアからフリーのBGMをダウンロード&インポートする 
アセットストアには、3Dモデルやスクリプトだけでなく、たくさんの音素材が提供されています。早速アセットストアにアクセスしてみましょう! メニューの[Window]ー[Asset Store]をクリックします。     
アセットストアの右上にある検索ボックスにmusic packと入力してエンターキーを押すと、検索結果に「Sci-fi Music Pack」が表示されるのでクリックします(図1 ) 。    
 
図1 
 
表示されたSci-fi Music Packの[Download]ボタンをクリックします(図2 ) 。   
 
図2 
 
するとLicence Agreementダイアログ表示されます。この作品はCreative Commons CC-BY 3.0ライセンス下の利用規約とソフトウェア利用許諾契約で提供されています。『 使う場合は著者名「Robson Cozendey」とWebサイト「www.cozendey.com」を表記してください。』という意味なので、[ Accept]ボタンをクリックします(図3 ) 。          
 
図3 
 
実際にこの音楽ファイルを使ったゲームを公開する場合はこの指示に従ってください。
続いてImport packeageダイアログが表示されるので[Import]ボタンをクリックします(図4 ) 。   
 
図4 
 
しばらくするとインポートが終了し、ProjectにSci-fi Music Packが追加されます。 
 
図5 
 
BGM再生用のAudio Sourceを追加する 
Hierarchyの[SoundManager]をクリックします。表示されたInspectorの[Add Component]ボタンを押します。Add Componentの下に表示された検索ボックスに「audio source」と入力するとAudio Sourceの選択肢が表示されるのでクリックします(図6 ) 。       
 
図6 
 
これでBGM再生用のAudio Sourceが追加されました。SoundManagerにはDay3で爆発音再生用に追加したAudio Sourceと今回追加したものと合わせて2つのAudio Sourceが追加されています。Audio Sourceは一度に一つの音声ファイルしか再生することができません。BGMと爆発音は同時に再生する必要があるので、別々のAudio Sourceを使う必要があります。このため、2つのAudio Sourceを使用しています。  
再生するBGMファイルの設定を2Dサウンドに変更する 
3Dサウンドだと音の聞こえ方が音源との距離によって変わります。BGMは常に一定の音量で聞こえることが望ましいので、設定を2Dサウンドに変更します。 
Projectの[Sci-Fi Music Pack]をクリックします。BGMファイルの一覧が表示されるので[02. Space Battle]をクリックして表示されたInspectorの「3D Sound」のチェックを外し、[ Apply]ボタンを押します(図7 ) 。        
 
図7 
 
再生するBGMファイルをAudio Sourceに設定する 
続いて、Projectの[SoundManager]をクリックします。表示されたInspectorの「AudioSource」( 2つある内の下のもの)の「Audio Clip」にProjectの[Sci-Fi Music Pack]ー[02. Space Battle]をドラッグアンドドロップします(図8 ) 。           
 
図8 
 
これでAudio Clipに設定した音楽ファイルがゲーム起動時に再生されるようになりました。ここでポイントとなるのはAudio Sourceの「Play On Awake」のチェックです。チェックオンになっているとゲーム起動時に再生されるようになります。この機能を使うことでスクリプトのコードを書かずに設定だけで音楽を再生させることができます。  
ここで、ゲームを実行してみましょう! BGMが再生されるはずです! 
 
図9 
 
BGMが加わるとゲームの雰囲気がぐっと変わります。Audio Clipに設定するファイルを変えるだけでBGMを変えることができるので、ぜひ自分のお気に入りの音楽を設定してみてください! 
弾丸の軌道を表示させるには? 
さて、弾丸の軌道を表示させるにはどうしたらよいでしょうか? 自力でやろうとするならば、弾の後ろにCubeを薄くしたオブジェクトをくっつけて、弾が移動するとともにCubeのTransformのScaleを縦に伸ばしていく方法が考えられますが、作るのに結構手間がかかりそうです。    
検索エンジンで「Unity 軌道 描画」と入力して検索してみると、UnityにはTrail Rendererという軌跡を描画する便利な機能があることが分かりました。Trail Rendererをオブジェクトに追加すると、追加されたオブジェクトが動いた際の軌道を描画してくれます。つまり、このゲームの場合、バズーカの弾丸オブジェクトにTrail Rendererを追加するだけで軌道を表示させることができます。      
このようにUnityの場合、ゲームでよくある仕様を実装する便利な機能がたくさんあるので、自力で実装する前に検索エンジンで「Unity ○○(やりたいこと) 」で検索してみるとよいでしょう。    
それでは早速Trail Rendererを使ってみましょう!
弾丸オブジェクトにTrail Rendererを追加する 
Hierarchyの[Bullet]をクリックして表示されたInspectorの[Add Component]をクリックします。表示された検索ボックスに「trail renderer」と入力すると表示されるTrail Rendererをクリックします(図10 ) 。       
 
図10 
 
これでBulletにTrail Rendererが追加されました。
Trail RendererにMaterialを追加する 
続いてTrail Rendererで描画する軌跡に表示するMaterialを設定します。青いマテリアルを指定すれば赤い軌跡が、炎のマテリアルを設定すれば炎の軌跡が描画されます。 
BulletのInspectorの「Trail Renderer」の「Materials」をクリックすると、Materialsが展開されて「Size」と「Element 0」が表示されます。Element 0の右端の丸いボタンをクリックするとSelect Materialダイアログが表示されるのでFireballCをダブルクリックします。         
 
図11 
 
弾丸軌道の表示時間・幅を設定する  
続いてTrail RendererのTimeに「3」 、Start Widthに「0.3」 、End Widthに「0.3」を入力します。Timeが軌跡の表示時間、Start Widthが軌跡を表示し始めた時の幅、End Widthが軌跡を表示し終える時の幅です。          
 
図12 
 
これでTrail Rendererの設定が完了しました。ゲームを実行してみましょう!
 
図13 
 
これで弾丸がどういう軌道で飛んでいくがよく見えるようになり、弾を撃っている臨場感が増しました! Trail RendererのMaterialを別のものに変更すれば弾丸軌道の色を変えることができるので、別のMaterialを設定してどう変わるかを試してみてください。  
これでゲーム完成です!
 
今回でこの連載も最終回となります。いかがだったでしょうか? Unityを使えば、思っていたよりもずっと簡単にゲームを作れると感じたのではなないかと思います。 
この連載で制作したゲームは私が以前開発した「ユニティちゃんバズーカ 」というゲームの簡易版になっています。ユニティちゃんバズーカでは、この連載で実装した機能のほかに以下のような仕様を実装しています。   
プレイヤーの3Dモデル選択機能 
敵キャラの3Dモデルを複数化 
ゲームクリアタイムをサーバに保存してランキング表示 
 
興味のある方はご自身で実装方法を考え、ぜひ実装してみてください! この連載を読み終えた今のあなたなら、もちろんできるはずです!  
参考:ユニティちゃんバズーカURL 
http://mikumikuplay.com/bazooka/     
 
また、ユニティちゃんバズーカをさらに発展させてオンラインマルチプレイを実現した「ミクミク防衛軍」というゲームも個人で開発して完成させることができました。ミクミク防衛軍ではオンラインマルチプレイの実装に「Photon Cloud 」というサービスを利用しています。Photon CloudもUnityの様々な機能と同様に、とても簡単に利用することができて、驚くほど簡単にオンラインマルチプレイゲームを実装することができました。       
参考:ミクミク防衛軍 
http://mikumikuplay.com/boeigun/     
参考:Photon Cloud 
http://photoncloud.jp/    
 
オンラインマルチプレイというと難しいイメージがありますが、UnityとPhoton Cloudを使えば、思っていたよりずっと簡単に実装することができます。  
この連載を読み始める前のあなたはおそらく「3Dゲーム開発って難しそうだなぁ」と思っていたのではないでしょうか? それが今ではどうでしょうか?  
「思ってたより、ずっと簡単だな! できそうな気がする! オレならできる!」 
という感じでしょうか!
私がPhoton Cloudを見つけた方法は検索エンジンに「Unity オンラインマルチプレイ」と入力して検索ボタンを押しただけです。使ってみたら、実際にオンラインマルチプレイゲームを作ることができました! 作りたいゲームがあったら、「 Unity ○○(やりたいこと) 」と検索すればいいだけです。必要な道具は揃っています! そしてそれらの道具を使いこなす力を今のあなたは持っています!    
ぜひ、自分が作りたいゲームを作ってください! 最後まで読んでくれてどうもありがとうございました。