ティータイムで作るシューティングゲーム


皆さんご存知、あの、なかしまです。

 

Unityって便利ですよね。こんなに楽して開発していいのかと不安になるくらい簡単にゲームが作れます。

私がモバイル向けにゲーム開発を始めた頃(7〜8年前)は、OpenGLを使ってゴリゴリ書いても性能が出ずに困っていたのに、端末のスペック向上と開発ツールの充実で、今では目をつぶっていてもゲームが作れてしまいます。

 

ちょっとした合間でゲームが作れるのがUnityの最大の強みなので、今日はティータイムを使ってシューティングゲームを作ってみようと思います。

その1『ゲームのイメージを固める』

ゲームを作る為には、まずどんなゲームを作るのかを考えます。ティータイムでゲームを作る一番のハードルがここかもしれません(大概の人は考えている内にティータイムが終わります)。幸い私はとても斬新なゲームのアイデアを思いつくことが出来ました。

その2『リソースを準備する』

ゲーム作りにはリソースが不可欠です。今回は”21XX年、突如現れた謎の生命体と戦う若きパイロット”を操作するシューティングゲームにしたのでPhotoshopを使って以下のような素材を作成しました。

スクリーンショット 2014-08-15 17.37.01

スクリーンショット 2014-08-15 17.37.22

その3『Unityプロジェクトを作成する』

プロジェクトを作成して、先ほど作ったリソースをぶっ込みます。

スクリーンショット 2014-08-15 17.41.04

ついでにGameスクリプトを作りました。

スクリーンショット 2014-08-15 17.42.34

その4『Editor拡張をする』

Unityと言えばEditor拡張です。Editor拡張することで、よく分からん感覚的なパラメータの修正などをプログラマがしなくても済むようになるので、快適な開発ライフを送ることが出来ます。今回は一人で開発しますが、そんな時でも拡張しちゃいます。

using UnityEngine;
using UnityEditor;
using System.Collections;

[CustomEditor(typeof(Game))]
public class GameEditor : Editor {
    public override void OnInspectorGUI() {
    }
}

OnInspectorGUI()の中に描画したいモノを書くことで、インスペクター内を拡張できます。例えばボタンを配置したかったら。

         GUILayout.BeginHorizontal("box");
         GUILayout.FlexibleSpace();
         if (GUILayout.Button("<-"GUILayout.Width(50f)))
         {
         }
         GUILayout.FlexibleSpace();
         if (GUILayout.Button("-"GUILayout.Width(50.0f))) 
         {
         }
         GUILayout.FlexibleSpace();
         if (GUILayout.Button("->"GUILayout.Width(50f)))
         {
         }
         GUILayout.FlexibleSpace();
         GUILayout.EndHorizontal ();

こうすることでインスペクター上にボタンを表示できます。

スクリーンショット 2014-08-15 17.57.57

 

この要領で、どんどんEditorを拡張していきます。シューティングゲームを作成するので、自機と敵機の画像をインスペクターに表示してしまいましょう。画像を表示するにはこのように書きます。

             GUILayout.BeginArea(new Rect(0,032,32));
             GUILayout.Label(Resources.Load("myship"as Texture);
             GUILayout.EndArea();

ゲームのイメージをよりインスペクターから得られるように、このようにしてみました。

スクリーンショット 2014-08-15 18.08.08

これで、複数人で作業するときでも制作者のイメージや意図が明確に共有できて開発効率が上がること間違い無しです。

ここまで作ったタイミングで、ふと

“さっき付けたボタンで自機を動かせるようにして、操作感なども分かるようにしたら?”

という思いが頭を過りました。どう考えても、その方がいいに決まってます。

早速各ボタンにイベントを付けて、ついでに敵機も動くようにして、shotボタンで弾を発射して敵機を攻撃出来るようにしてみました。



クリックすると動画が再生されます。

 

おっと、ここでティータイム終了です。結局Editor拡張に気を取られすぎて肝心のゲームを作るところまで行けませんでした。。。ただ、限られた時間の中でモノ作りをするには計画性が大事だ、ということを学べたのは大きな収穫です。

次回は何を作ろうかな。