using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class GameControl : MonoBehaviour {
// ゲームクリアフラグ
public static bool finishFlag;
public enum STEP // 状況を管理するSTEP
{
NONE = -1,
SET,
PLAY,
FINISH,
BOSS,
CREATE,
}
private STEP step; // 今のSTEP
private STEP next_step; // 次のSTEP
private float step_timer; // 経過時間
private int coins; // コインの総数
private int score; // コインを取得した数
private int left; // コインの残り数
// 画面に表示するテキスト
public Text scoreText;
public Text messageText;
public Text timeText;
public GameObject prefabBoss;
public AudioClip coinSE;
private GameObject player;
private Animator animator; // プレイヤーのアニメーション
// Use this for initialization
void Start () {
finishFlag = false;
coins = 0; // コインの総数を設定
score = 0;
left = coins - score;
// 残りコイン数を画面に表示
scoreText.text = left.ToString();
// プレイヤー情報取得
player = GameObject.Find("Player");
animator = player.GetComponent<Animator>();
next_step = STEP.SET;
}
// Update is called once per frame
void Update () {
step_timer += Time.deltaTime; // 経過時間を取得
// (1) STEP変化時
if(next_step != STEP.NONE)
{
step = next_step; // 現状に反映
next_step = STEP.NONE;
step_timer = 0.0f;
switch (step)
{
case STEP.SET:
next_step = STEP.PLAY;
break;
}
}
// (2) 繰り返し実行する処理
switch (step)
{
case STEP.PLAY:
// プレイ中は経過時間を表示
timeText.text = string.Format("{0:000.0}", step_timer);
break;
case STEP.CREATE:
// 未使用(コインを取得するとEnemyZoneから敵が出現)
GameObject enemyZone = GameObject.Find("EnemyZone");
enemyZone.GetComponent<EnemyZoneControl>().CreateEnemy();
next_step = STEP.PLAY;
break;
case STEP.FINISH:
// ゲーム終了
scoreText.text = "";
messageText.text = "CLEAR!!";
animator.SetBool("Clear", true);
// エンターキーでリスタート
if (Input.GetKeyDown(KeyCode.Return))
{
SceneManager.LoadScene("GameScene");
}
break;
}
}
// スコアカウント関数
public void plusScore()
{
// 取得したコイン数を加算
score++;
// コインゲットの効果音
AudioSource.PlayClipAtPoint(coinSE, player.transform.position);
// コインの残り数を表示
left = coins - score;
scoreText.text = left.ToString();
// コインの残り数によって処理を変える
if (left == 0)
{
finishFlag = true; // 残り0ならゲーム終了
next_step = STEP.FINISH;
}
// コインの残り数によってボスを出現させてみる
}
// ボスを出現させる関数
void CreateBoss()
{
// ボスの位置をプレイヤーの前方にする
Vector3 pos = player.transform.position;
pos += player.transform.forward * 10.0f;
// ボス出現
GameObject boss = Instantiate(prefabBoss);
boss.transform.position = pos;
}
}
コメント