¡¡GoalClear ¥á¥½¥Ã¥É¤òÄɲä·¡¢¥´¡¼¥ëÃÏÅÀ¤ËÀßÃÖ¤·¤Æ¤¤¤ë¥¯¥ê¥¢È½Äê¤òÄ̲ᤷ¤¿ºÝ¤Ë¡¢BGM¤ÎÀÚ¤êÂؤ¨¤Î½èÍý¤ò¼ÂÁõ¤·¤Þ¤¹¡£
¡¡¤Þ¤¿ GenerateGoal ¥á¥½¥Ã¥ÉÆâ¤ÇÀ¸À®¤·¤¿¥´¡¼¥ëÃÏÅÀ¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë¥¢¥¿¥Ã¥Á¤µ¤ì¤Æ¤¤¤ë GoalChecker ¥¹¥¯¥ê¥×¥È¤Î SetUpGoalHouse ¥á¥½¥Ã¥É¤ò¼Â¹Ô¤·¤Æ
GameDirector ¤Î¾ðÊó¤òÅϤ·¤Æ¤¤¤Þ¤¹¡£¤³¤ì¤Ë¤è¤ê¡¢GoalChecker ¥¹¥¯¥ê¥×¥È¤ËÍÑ°Õ¤·¤¿ GameDirector ¤ÎÊÑ¿ô¤Ë¥¢¥µ¥¤¥ó¤¬¹Ô¤¨¤Þ¤¹¡£
GameDirector.cs
¡¡<=¡¡¥¯¥ê¥Ã¥¯¤¹¤ë¤È³«¤¤Þ¤¹
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GameDirector : MonoBehaviour
{
// ¥´¡¼¥ë
[SerializeField]
private GoalChecker goalHousePrefab;
// Player
[SerializeField]
private PlayerController playerController;
[SerializeField]
private FloorGenerator[] floorGenerators;
[SerializeField]
private RandomObjectGenerator[] randomObjectGenerators;
[SerializeField]
private AudioManager audioManager;
¡¡¡¡private bool isSetUp; // ¥²¡¼¥à¤Î½àÈ÷ȽÄêÍÑ¡£true ¤Ë¤Ê¤ë¤È¥²¡¼¥à³«»Ï
private bool isGameUp; // ¥²¡¼¥à½ªÎ»È½ÄêÍÑ¡£true ¤Ë¤Ê¤ë¤È¥²¡¼¥à½ªÎ»
private int generateCount; // ¶õÃæ¾²¤ÎÀ¸À®²ó¿ô
// generateCount ÊÑ¿ô¤Î¥×¥í¥Ñ¥Æ¥£
public int GenerateCount
{
set {
generateCount = value;
Debug.Log("À¸À®¿ô / ¥¯¥ê¥¢ÌÜɸ¿ô : " + generateCount + " / " + clearCount);
if (generateCount >= clearCount) {
// ¥´¡¼¥ëÃÏÅÀ¤òÀ¸À®
GenerateGoal();
// ¥²¡¼¥à½ªÎ»
GameUp();
}
}
get {
return generateCount;
}
}
public int clearCount;¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ¡¡// ¥´¡¼¥ëÃÏÅÀ¤òÀ¸À®¤¹¤ë¤Þ¤Ç¤ËɬÍפʶõÃæ¾²¤ÎÀ¸À®²ó¿ô
void Start() {
// ¥¿¥¤¥È¥ë¶ÊºÆÀ¸
StartCoroutine(audioManager.PlayBGM(0));
// ¥²¡¼¥à³«»Ï¾õÂ֤˥»¥Ã¥È
isGameUp = false;
isSetUp = false;
// FloorGenerator¤Î½àÈ÷
SetUpFloorGenerators();
// ³Æ¥¸¥§¥Í¥ì¡¼¥¿¤ÎÀ¸À®¤òÄä»ß
StopGenerators();
}
/// <summary>
/// FloorGenerator¤Î½àÈ÷
/// </summary>
private void SetUpFloorGenerators() {
for (int i = 0; i < floorGenerators.Length; i++) {
floorGenerators[i].SetUpGenerator(this);
}
}
void Update() {
// ¥×¥ì¥¤¥ä¡¼¤¬¤Ï¤¸¤á¤Æ¥Ð¥ë¡¼¥ó¤òÀ¸À®¤·¤¿¤é
if (playerController.isFirstGenerateBallon && isSetUp == false) {
// ½àÈ÷´°Î»
isSetUp = true;
// ³Æ¥¸¥§¥Í¥ì¡¼¥¿¤ÎÀ¸À®¤ò¥¹¥¿¡¼¥È
ActivateGenerators();
// ¥¿¥¤¥È¥ë¶Ê¤ò½ªÎ»¤·¡¢¥á¥¤¥ó¶Ê¤òºÆÀ¸
StartCoroutine(audioManager.PlayBGM(1));
}
}
/// <summary>
/// ¥´¡¼¥ëÃÏÅÀ¤ÎÀ¸À®
/// </summary>
private void GenerateGoal() {
// ¥´¡¼¥ëÃÏÅÀ¤òÀ¸À®
GoalChecker goalHouse = Instantiate(goalHousePrefab);
////* ¤³¤³¤«¤éÄɲà *////
// ¥´¡¼¥ëÃÏÅÀ¤Î½é´üÀßÄê
//goalHouse.SetUpGoalHouse(this); // <= °ìö¥³¥á¥ó¥È¥¢¥¦¥È¤·¤Æ¤ª¤¯
////* ¤³¤³¤Þ¤Ç *////
}
/// <summary>
/// ¥²¡¼¥à½ªÎ»
/// </summary>
public void GameUp() {
// ¥²¡¼¥à½ªÎ»
isGameUp = true;
// ³Æ¥¸¥§¥Í¥ì¡¼¥¿¤ÎÀ¸À®¤òÄä»ß
StopGenerators();
}
/// <summary>
/// ³Æ¥¸¥§¥Í¥ì¡¼¥¿¤òÄä»ß¤¹¤ë
/// </summary>
private void StopGenerators() {
for (int i = 0; i < randomObjectGenerators.Length; i++) {
randomObjectGenerators[i].SwitchActivation(false);
}
for (int i = 0; i < floorGenerators.Length; i++) {
floorGenerators[i].SwitchActivation(false);
}
}
/// <summary>
/// ³Æ¥¸¥§¥Í¥ì¡¼¥¿¤òÆ°¤«¤·»Ï¤á¤ë
/// </summary>
private void ActivateGenerators() {
for (int i = 0; i < randomObjectGenerators.Length;i++) {
randomObjectGenerators[i].SwitchActivation(true);
}
for (int i = 0; i < floorGenerators.Length;i++) {
floorGenerators[i].SwitchActivation(true);
}
}
////* ¤³¤³¤«¤é¿·¤·¤¤¥á¥½¥Ã¥É¤òÄɲà *////
/// <summary>
/// ¥´¡¼¥ëÅþÃå
/// </summary>
public void GoalClear() {
// ¥¯¥ê¥¢¤Î¶ÊºÆÀ¸
StartCoroutine(audioManager.PlayBGM(2));
}
////* ¤³¤³¤Þ¤Ç *////
}