カウントダウン処理の作り方

ゲームオーバー処理などができましたので、次はカウントダウン処理を作っていきます。

カウントダウンタイマー

まずカウントダウンを行うタイマーを作りましょう。作り方はユニティちゃんパルクールの時のタイマーと全く同じですのでそちらを参照してください。

タイマー管理クラス

次はタイマー管理クラスです。こちらもユニティちゃんパルクールの時とほぼ同じですが、いくつか違う点もあるのでソースコードを載せておきます。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityStandardAssets.Characters.ThirdPerson;

[RequireComponent(typeof(CountDownTimer))]
public class TimeManager : MonoBehaviour
{
	[SerializeField]
	float waitTime = 2.0f;
	[SerializeField]
	Text readyGoText;
	[SerializeField]
	string seName = "";

	ThirdPersonUserControl character;
	Rigidbody playerRigidbody;
	GameObject gameManagerObj;
	GameManager gameManager;
	SoundManager soundManager;

	void Start ()
	{
		character = GameObject.FindGameObjectWithTag("Player").GetComponent<ThirdPersonUserControl>();
		playerRigidbody = GameObject.FindGameObjectWithTag("Player").GetComponent<Rigidbody>();
		gameManagerObj = GameObject.Find("GameManager");
		gameManager = gameManagerObj.GetComponent<GameManager>();
		soundManager = gameManagerObj.GetComponent<SoundManager>();

		if (gameManager.isDebugMode)
		{
			character.allowInput = true;
		}
		else
		{
			StartCoroutine(ReadyGo());
		}
	}

	IEnumerator ReadyGo()
	{
		yield return new WaitForEndOfFrame();

		//プレイヤーの入力を禁止する
		character.allowInput = false;
		playerRigidbody.isKinematic = true;

		yield return new WaitForSeconds(waitTime);

		readyGoText.text = "3";

		yield return new WaitForSeconds(1.0f);

		readyGoText.text = "2";

		yield return new WaitForSeconds(1.0f);

		readyGoText.text = "1";

		yield return new WaitForSeconds(1.0f);

		readyGoText.text = "GO!!";

		//プレイヤーの入力を許可する
		character.allowInput = true;
		playerRigidbody.isKinematic = false;

		//カウントダウン開始
		gameManager.countDown = true;

		yield return new WaitForSeconds(waitTime);

		readyGoText.enabled = false;

	}

}

そうしたら、このままではエラーが出ると思うのでGameManagerのコードに「isDebugMode」というパブリックなbool変数を追加してください。テストプレイのときにいちいちカウントダウンが入るとやりづらいので、GameManagerの「isDebugMode」がtrueのときはカウントダウンを行わないようにしてあります。

なお主な変更点は開始時のカウントダウンの方法を「3,2,1…」に変えたのと、サウンドマネージャの変更への対応、あとはプレイヤーの入力受付の可否に関する部分の変更です。書けたらこれをMain Canvasにでもアタッチして、「Ready Go Text」と「Timer Text」にUIの該当するテキストを設定してください。

これでカウントダウン処理ができました。

次のページ→PlayerPrefsを使わないセーブ・ロード処理の作り方