[Unity] Unity初心者がゲーム開発してみた(メダル集め編3)

どうも、tatsuです!

今回は前回に引き続き、Unityでメダル集めゲームを開発していこうと思います!

[Unity] Unity初心者がゲーム開発してみた(メダル集め編2)

2017.10.02

[Unity] Unity初心者がゲーム開発してみた(メダル集め編1)

2017.10.01
前回はPhysicsを使った当たり判定を追加するところまでやったので、今回はプレイヤーの動きを付けていこうと思います。
それでは作っていきましょう!

プレイヤーに動きを付ける

今回プレイヤーに付ける動きは「歩く」と「飛ぶ」です。
1.プロジェクトの[Assets]の何もないところで右クリックし、[Create]→[C# Script]を選択します。
名前は「playerScript」としました。

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

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

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

public class playerScript : MonoBehaviour {

	// physicsを使用する場合に必要 物体に力を加えて動かすという考え
	Rigidbody2D rigid;
	// 飛ぶ時に加える力
	float flyForce = 240.0f;
	// 歩くときに加える力
	float walkForce = 10;
	// 一つ目のメダルを取ったらtrue
	bool getMedalOne = false;
	// 二つ目のメダルを取ったらtrue
	bool getMedalTwo = false;
	// 三つ目のメダルを取ったらtrue
	bool getMedalThree = false;


	void Start () {
		// 初回でRigidbody2Dのインスタンスを取得
		rigid = GetComponent<Rigidbody2D> ();
	}

	void Update () {
		// スペースキーを押すとジャンプする
		if (Input.GetKeyDown (KeyCode.Space)) {
			// transform.upは上方向  上方向に飛ぶ力を掛けている
			rigid.AddForce (transform.up * flyForce);
		}

		// →キーを押した時の処理
		if (Input.GetKeyDown (KeyCode.RightArrow) || Input.GetKey(KeyCode.RightArrow)) {
			// 右に移動する
			rigid.AddForce (transform.right * walkForce);
			// 向きを右にする
			transform.localScale = new Vector3(3, 3, 1);
		}

		// ←キーを押した時の処理
		if (Input.GetKeyDown (KeyCode.LeftArrow) || Input.GetKey(KeyCode.LeftArrow)) {
			// 左に移動する 左に進める場合はtransform.rightに-1をかけて逆方向にする
			rigid.AddForce (transform.right * -1 * walkForce);
			// 向きを左にする
			transform.localScale = new Vector3(-3, 3, 1);
		}
	}

	// メダルとの衝突判定
	// OnTriggerEnter2Dメソッドを使用することで[Circle Collider 2D]の[Is Trigger]にチェックをしたオブジェクトとの衝突を検知できる
	void OnTriggerEnter2D(Collider2D medal){

		Debug.Log (medal.name + "GET!");
		if (medal.name == "medal_01") {
			getMedalOne = true;
		} else if (medal.name == "medal_02") {
			getMedalTwo = true;
		} else {
			getMedalThree = true;
		}

		if (confirmMedals ()) {
			Debug.Log ("クリア!");
		}
	}

	// メダルを全てとったか確認する
	private bool confirmMedals(){
		// 3つのフラグがすべてtrueならメダルを全て取得済み
		if (getMedalOne && getMedalTwo && getMedalThree) {
			return true;
		}
		return false;
	}
}

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

5.画面上部のスタートボタンをクリックします。
以下のことを確認してください。
・自機移動ができる
・壁をすり抜けない
・メダルを取るごとにコンソールに「medal_0○GET!」と表示される
・メダルを三枚とるとコンソールに「クリア!」と表示される

まとめ

今回でメダル集めゲームは完成とします!お疲れ様でした!
改善点として以下のようなことがあると思うので、みなさんでカスタマイズしてみてください。
では!

改善点

  • メダルを毎回ランダムに配置する
  • クリアしたらクリア画面に遷移する
  • 取ったメダルは画面から削除する
  • 制限時間を付ける

[Unity] 制限時間を設定する

2017.11.19

[Unity] 作成したゲームをPC用に書き出す

2017.10.22

コメントを残す

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