おもちゃラボ

Unityで遊びを作ってます

【Unity入門】60分で作るシューティングゲーム 第1回

Unityをインストールしてみたけれども「どうやってゲームを作っていけばよいか分からない!」という方は多いと思います。
かくいう私もUnityを触り始めたときは、何をどうしていいのかさっぱり分かりませんでした。

そこで、簡単なシューティングゲームを作りながらUnityの使い方を紹介できればと思います〜。
記事は第1回〜第6回まであり、次のような流れになっています。

第1回 ロケットを動かそう
第2回 弾を発射しよう
第3回 隕石を落下させよう
第4回 当たり判定をしよう
第5回 ゲームオーバを判定しよう
第6回 お化粧をしよう

1記事をは10分程度で出来るようにしているので、全部で60分(ちょっときつい)の予定です。
まぁ、時間は気にせずのんびりとやってみて下さい〜笑

スクリプトの書き方やクラスの作り方は私の書いた本「Unityの教科書」にしたがって作っているので、こちらも参考にして下さいね。

今回作るゲームの概要

今回Unityで作るゲームは次のような見た目のシューティングゲームになります。

f:id:nn_hokuson:20160702231742g:plain

自機は左右キーで移動させ、スペースキーで弾を打ちます。
画面の上端からは隕石が落下して来るので破壊して下さい。もし、破壊できずに画面の下端を隕石が超えるとゲームオーバになります。

プロジェクトを作成しよう

まずは、Unityのプロジェクトを作成するところからはじめましょう。
Unityのスタートアップ画面で、プロジェクト名を「SampleShooting」、ゲームタイプに「2D」を選択します。

f:id:nn_hokuson:20160703084730p:plain:w500

次に、画面の設定を行いましょう。今回は縦長の画面レイアウトにするのでGameタブをクリックし、アスペクト比を選択します。
Unityには縦長のアスペクト比が用意されていないため、一番下の「+ボタン」をクリックしてTypeに「Aspect Ratio」、Width&Heightに「9:16」と入力して下さい。

f:id:nn_hokuson:20160703085223p:plain:w500

Unityでゲームを作るのに必要な素材をUnityのプロジェクトビューにドラッグ&ドロップします。ゲームに必要な素材は↓ココにおいておくのでダウンロードして使って下さい。

www.dropbox.com

ロケットを配置しよう

準備が出来たところで、まずはUnityでのゲーム作りの第一歩として画像を画面に出しましょう。
Unity2Dでは画面上に表示する画像のことを「スプライト」と呼びます
今後はスプライトという呼び名を使うので覚えておいて下さいね!

では先ほどプロジェクトビューに登録したロケットのスプライト(rocket)をシーンビューにドラッグ&ドロップして下さい。

f:id:nn_hokuson:20160703090750p:plain:w500

これだけの操作でロケットが画面上に表示されるようになります。Unityって本当に簡単ですね〜。


シーンビューに配置されたスプライトがヒエラルキービューにも一覧として表示されています。このようにシーンビュー上のスプライトとヒエラルキービューのリストは対応していることを覚えておいて下さい。

f:id:nn_hokuson:20160703091057p:plain:w500

ロケットのスプライトを表示する場所はインスペクタから変更できます。
ヒエラルキービューで「rocket」を選択すると、Unityエディタ右側のインスペクタにロケットの詳細情報が表示されます。

ここでは、「Transform」項目のPositionを「0,-4,0」に設定します。

f:id:nn_hokuson:20160703093231p:plain:w500

ロケットを動かそう

左右キーの入力に応じてロケットを動かすために、C#スクリプトを作成します。
UnityではC#、Javascript、Booなどの言語が選べますが、ここでは汎用的なC#を使います。
 
プロジェクトビューで右クリックし、「Create」→「C# Script」を選択して下さい。
作成したファイル名をRocketControllerに変更しておきましょう。

f:id:nn_hokuson:20160703093649p:plain:w500

RocketControllerをダブルクリックしてエディタを開き、次のスクリプトを入力して下さい。

using UnityEngine;
using System.Collections;

public class RocketController : MonoBehaviour {
	void Update () {
		if (Input.GetKey (KeyCode.LeftArrow)) {
			transform.Translate (-0.1f, 0, 0);
		}
		if (Input.GetKey (KeyCode.RightArrow)) {
			transform.Translate ( 0.1f, 0, 0);
		}
	}
}

Input.GetKey関数を使って引数に指定したキーが押されているかを調べています。
キーが押されていた場合にはTranslate関数を使ってロケットの位置を移動させています。
Translate関数は現在の位置から引数に与えたぶんだけ移動させる関数です。引数に与えた座標に動かすのではないことに注意して下さい。


スクリプトが完成したら、作成したスクリプトをロケットにアタッチしましょう。
Unityでは、スクリプトをオブジェクトにアタッチすることでオブジェクトがスクリプトどおりに動くようになります。
 
プロジェクトビューから「RocketController」を選択し、ヒエラルキービューの「rocket」にドラッグ&ドロップして下さい。

f:id:nn_hokuson:20160703093927p:plain:w500

スクリプトがアタッチできたら実行してみましょう。左右キーの入力に応じてロケットが移動します。

f:id:nn_hokuson:20160703094256g:plain

今回はここまでです。今回作成したプロジェクトファイルを置いておきます。

www.dropbox.com

次回はロケットから弾を発射できるようにします。
第2回の記事へはこちらからどうぞ!

nn-hokuson.hatenablog.com