Unityを使えば、個人でも短期間でゲームが作れる
「ゲームを作りたい!」
誰もが一度は思ったことがあるのではないでしょうか? 私もそうでした。しかしいざゲーム開発の本を読んでみると、C++で書かれた難解で膨大な記事に圧倒されて自分には無理だと諦めていました。
ですが、私はこれまでに2か月間で2つのゲームを作ることができました。なぜ、そのようなことができたのか? その答えは「Unity を使ったから!」です。
Unityを使えばC++の難解で膨大なコードを書く必要がありません。ゲームのオブジェクトをGUIで配置して、それらを操作するスクリプトを少し書くだけで、ゲームを作ることができます。スクリプトを書くのに使うプログラミング言語は、C# 、UnityScript (静的型付JavaScript) 、Boo (静的型付Python)から選ぶことができます。
また、Unityではゲームに使用する3Dモデルや音声、プログラムの部品などがアセットストアに用意されているため、それらをうまく活用すれば、個人でも短期間でゲームを作ることが可能となります。アセットストアの素材には有料のものと無料のものがあります。
この連載では、C#を使用して解説します。C#は静的型言語でありながら、簡潔で直感的に分かりやすいコードが書ける工夫がなされているため、C++よりも学習しやすいのが特徴です。また素材にはアセットストアの無料素材のみを使用します。
ゲームを一つ制作する過程を通して、既存の素材をうまく活用するコツを紹介します。
ゲーム制作開始! まず初めにテンプレートとなるプロジェクトを探す
アセット(3Dモデルやスクリプト等の素材)をうまく組み合わせれば個人でも短期間でゲームを開発できると言いましたが、初心者の場合、何をどう組み合わせたらいいかが、なかなか分からないものです。アセットストアにはComplete Projects というゲームのテンプレートが用意されています。これらはあらかじめ3Dモデルやスクリプトが組み合わされていて、簡単なゲームが構成されています。今回はMecanim Example Scenes というProjectを土台にしてゲームを開発します。
Mecanim Example Scenes はUnity Technologiesが提供しているUnityのプロジェクトファイル一式です。このアセットはMecanimというアニメーション技術の使い方を説明するために用意されたものです。この中にTeddy Bear Bazooka というSceneがあります。このSceneはプレイヤーがバズーカでクマを打つ仕組みが実装されています。Sceneというのは、Unityにおけるゲームの場面のことで、UnityではSceneを入れ替えることでゲームの場面を切り替えることができます。
Mecanim Example Scenesを土台にしてゲームを開発すると、以下のような利点があります。
土台を作り上げる手間がなくなり生産性が上がる
どうやってアセットを組み合わせればいいかや、Mecanimの使い方等を学べる
何事も一から自分で試行錯誤するよりも先人の知恵を学んだほうが効率がいいものです。Unityの場合、アセットストアに提供されているアセットこそが先人の知恵の宝庫です。アセットストアには多数の無料アセットが提供されているので、それらをダウンロードして動かしてみるだけでも勉強になるし、ゲームのアイデアが浮かんだりします。これらのアセットの構造を読み解き、応用するにはコツがいるので、それらも順次紹介していきたいと思います。
私が以前作ったゲーム「ユニティちゃんバズーカ」もこのSceneを利用しています(図1 ) 。この連載では「ユニティちゃんバズーカ」の簡易版を作っていきます。
図1 ユニティちゃんバズーカ
プロジェクトの作成、アセットのインポート
まだUnityをインストールしていない方は、以下のURLからダウンロードしてインストールを完了してください。
Unityを起動したら、まずはプロジェクトを作成します。Unityを起動してメニューから[File]ー[New Project]で「BazookaGame」というフォルダを作成して選択します。
次にMecanim Example Scenesをインポートします。
メニューから[Window]ー[Asset Store]でアセットストアを起動します。右上にある検索ボックスで「Mecanim Example Scenes」を検索してページを開き、[ Import]ボタンをクリックします(図2 ) 。
図2
続いてImportting packageダイアログの[Import]ボタンをクリックします(図3 ) 。ダウンロードしてインポートされるまでに少々時間が掛かります。
図3
まずはインポートしたアセットを使ってゲームをプレイしてみましょう。Teddy Bear BazookaのSceneをダブルクリックしてSceneを開きます(図4 ) 。
図4
すると、図5 のようなダイアログが表示されます。現在のSceneを保存しますか?という意味なので[Don‘ t Save]をクリックします。
図5
Teddy Bear BazookaのSceneが開かれたらゲーム実行ボタンをクリックします(図6 ) 。
図6
操作方法は右クリック を押すとバズーカを構えて、左クリック でバズーカを発射します。W 、A 、S 、D か矢印キー で移動します。クマに弾が当たるとクマが倒れて少しすると起き上がります。これだけでも簡単なゲームになっています。
それでは、これを土台にゲームを作っていきましょう。
クマの数を増やす
クマが1体だと寂しいので、クマの数を増やしましょう。ゲームを制御するGameControlというGameObjectを作ります。メニューから[GameObject]ー[Create Empty]で空のゲームオブジェクトを作成します。
Hierarchyに作成された[GameObject]を選択してF2キーを押して、名前を「GameControl 」に変更します。
そしてProjectのScriptフォルダを右クリックして[Create]ー[C# Script]を選択します(図7 ) 。
図7
作成されたファイルの名前は「GameControl」にします。
作成されたScript/GameControlをHierarchyのGameControlにドラッグアンドドロップします。これで、GameControl.csに書かれているプログラムがゲーム内で実行されるようになります。UnityではHierarchyにGemeObjectを配置して、そのGameObjectに実行するスクリプトファイルを張り付けるというやり方で開発を進めます。
それではProjcetのGameControlをダブルクリックしましょう。MonoDevelopが起動されます(図8 ) 。
図8
コードを以下のように編集します。
public class GameControl : MonoBehaviour {
public GameObject bear ;
void Start () {
for ( int i = 0 ; i < 9 ; i ++) {
Instantiate ( bear );
}
}
void Update () {
}
}
このコードではpublicフィールドのbearをInstantiateメソッドで9体生成しています。このままだとbearはnullなので、bearにオブジェクトを設定する必要があります。UnityではpublicフィールドをUnityのGUIから設定する仕組みがあります。
それではMonoDevelopからUnityに戻ってHierarchyのGameControlを選択します。Teddyを「GameControl (Script)」の「Bear」にドラッグアンドドロップをします。Bearが「None (Game Object)」から「Teddy」に変わります(図9 ) 。これで、GameControl.csのbearフィールドにTeddy(クマの3Dオブジェクト)が設定されました。
図9
スクリプトのpublicフィールドをUnityのGUIから設定できる仕組みは非常に便利 です。コードを書き替えずにパラメータを設定できる ので細かいパラメータの調整が簡単にできます。
それではゲームを実行してみましょう(図10 ) 。
図10
クマが9体生成されて全部で10体になっています。賑やかになりました!
いかがだったでしょうか? ツールをちょちょいと操作してコードを少し書くだけで、ゲームを作れることが分かって頂けたのではないでしょうか。
次回はプレイヤーの3Dモデルを美少女キャラに変更してみたいと思います。お楽しみに!