[Unity] Unity初心者がゲーム開発してみた(弾避け編1)

どうも、tatsuです!

今回から、Unityで弾避けゲームを開発していこうと思います!
初ゲーム開発ということで、シューティングのようなただ弾を避けるだけの簡単(そう)な2Dゲームをチョイスしてみました。
また、Unityで使用するプログラミング言語にはいくつかありますが、私はC#を使って開発していこうと思います。
それでは作っていきましょう!

準備

1.unityを起動し、新規のプロジェクトを作成します。今回は「avoidGame」というプロジェクト名にしました。3D/2Dでは2Dをチョイスしてください。

2.画面左上から[File]→[Save Scenes]を選択し、シーンを保存します。今回はMainSceneをいう名前で保存しました。

3.今回使用する「自機」画像と「弾」画像をドラッグ&ドロップでプロジェクトに持ってきます。

4.シーン&ゲームのタブを[Scene]にし、先程の画像をドラッグ&ドロップで持ってきます。

5.ヒエラルキーで[Main Camera]を選択し、インスペクタの[Background]で背景色を変更します。
※やらなくても問題ないです。

以上で準備完了です。

動きを付ける

それでは「自機」と「弾」それぞれの動きを作っていきます。

自機に動きをつける

1.プロジェクトの[Assets]の何もないところで右クリックし、[Create]→[C# Script]を選択します。
名前は「spaceshuttleScript」としました。

2.「spaceshuttleScript」をダブルクリックして編集画面を開きます。

3.以下のように記述し、保存します。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class spaceshuttleScript : MonoBehaviour {

	// ゲーム開始後一度だけ呼ばれるメソッド
	void Start () {
		
	}
	
	// ゲーム開始後フレームごとに呼ばれるメソッド
	void Update () {
		// キーボードの左矢印が押された場合に左に移動する
		if (Input.GetKeyDown(KeyCode.LeftArrow) || Input.GetKey(KeyCode.LeftArrow)) {
			// 引数はx,y,z方向を順番に指定する 2Dなのでzは0にしておく
			transform.Translate (-0.1f, 0, 0);
		}

		// キーボードの右矢印が押された場合に右に移動する
		if (Input.GetKeyDown(KeyCode.RightArrow) || Input.GetKey(KeyCode.RightArrow)) {
			transform.Translate (0.1f, 0, 0);
		}

		// キーボードの上矢印が押された場合に上に移動する
		if (Input.GetKeyDown(KeyCode.UpArrow) || Input.GetKey(KeyCode.UpArrow)) {
			transform.Translate (0, 0.1f, 0);
		}

		// キーボードの下矢印が押された場合に下に移動する
		if (Input.GetKeyDown(KeyCode.DownArrow) || Input.GetKey(KeyCode.DownArrow)) {
			transform.Translate (0, -0.1f, 0);
		}
	}
}

4.「spaceshuttleScript」をドラッグ&ドロップでヒエラルキーにある「spaceshuttle」にくっつけます。

5.画面上部のスタートボタンをクリックします。
キーボードの矢印で自機移動ができることを確認してください。
※停止はもう一度スタートボタンをクリックします。

弾に動きをつける

1.プロジェクトの[Assets]の何もないところで右クリックし、[Create]→[C# Script]を選択します。
名前は「bulletScript」としました。

2.「bulletScript」をダブルクリックして編集画面を開きます。

3.以下のように記述し、保存します。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class bulletScript : MonoBehaviour {

	// ゲーム開始後一度だけ呼ばれるメソッド
	void Start () {
		
	}
	
	// ゲーム開始後フレームごとに呼ばれるメソッド
	void Update () {
		// 左方向へ移動させる
		transform.Translate(-0.2f, 0, 0);

		// 画面外に出たら弾を破棄する(画面外の玉がずっと残ってしまうのを防ぐ)
		if (transform.position.x < -12.0f) {
			// gameObjectはこのスクリプトをくっつけたオブジェクトのことを指します
			Destroy (gameObject);
		}
	}
}

4.「bulletScript」をドラッグ&ドロップでヒエラルキーにある「bullet」にくっつけます。

5.画面上部のスタートボタンをクリックします。
弾が左に移動し、画面外に出たらヒエラルキーから「bullet」が消滅することを確認してください。
※停止はもう一度スタートボタンをクリックします。

弾をランダムに出現させる

1.ヒエラルキーにある「bullet」をAssetsにドラッグ&ドロップします。

2.ドラッグ&ドロップしてきた「bullet」の名前を「bulletPrefab」に変更し、ヒエラルキーの方に存在する「bulletPrefab」は削除してください。

3.プロジェクトの[Assets]の何もないところで右クリックし、[Create]→[C# Script]を選択します。
名前は「bulletFactoryScript」としました。

4.「bulletFactoryScript」をダブルクリックして編集画面を開きます。

5.以下のように記述し、保存します。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class bulletFactoryScript : MonoBehaviour {

	// 後でUnity画面上からbulletPrefabを設定すると、ここにbulletPrefabが代入される
	public GameObject bulletPrefab;
	// 0.5秒間隔でbulletを出現させる
	float interval = 0.5f;
	// フレーム間の時間差
	float frameDelta = 0;

	void Start () {
		
	}
	
	void Update () {
		frameDelta += Time.deltaTime;
		// 0.5秒たったら
		if(frameDelta > interval) {
			frameDelta = 0;
			// おまじない
			GameObject gObject = Instantiate(bulletPrefab) as GameObject;
			// 上5から下-5までのどこかにランダムでbulletを配置
			gObject.transform.position = new Vector3(11, Random.Range(-5, 5), 0);
		}
		
	}
}

6.ヒエラルキーから[Create]→[Create Empty]を選択し、空オブジェクトを作成します。
名前は「bulletFactoryObject」にしました。

7.「bulletFactoryScript」をドラッグ&ドロップでヒエラルキーにある「bulletFactoryObject」にくっつけます。

8.ヒエラルキーの「bulletFactoryObject」を選択し、インスペクタの「Bullet Prefab」にAssetsの「bulletPrefab」をドラッグ&ドロップします。

9.画面上部のスタートボタンをクリックします。
弾が複数ランダムに出現することを確認してください。
※停止はもう一度スタートボタンをクリックします。

まとめ

今回は各オブジェクトの動きをつけるところまでご紹介しました。
次回は当たり判定などを付けていきたいと思います。
では!

[Unity] Unity初心者がゲーム開発してみた(弾避け編2)

2017.09.16

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です