¡¡Start ¥á¥½¥Ã¥É¤Ï¥³¥ë¡¼¥Á¥ó¥á¥½¥Ã¥É¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢yield ¤òÍøÍѤ·¤¿ÃæÃǽèÍý¤ò¼ÂÁõ¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
¤³¤Î½èÍý¤È DOTween ¤Î Sequence µ¡Ç½¤òÁȤ߹ç¤ï¤»¤Æ¡¢
¥ª¡¼¥×¥Ë¥ó¥°¤Î¥¢¥Ë¥á¤ÎÅÓÃæ¤Ç¥¥ã¥é¤òÅо줵¤»¤ë¡¢¤È¤¤¤¦±é½Ð¤ò¼ÂÁõ¤·¤Þ¤¹¡£
¡¡Áàºî¤·¤¿¤¤¥¥ã¥é¥â¥Ç¥ë¤Î¾ðÊó¤Ï¥¹¥¯¥ê¥×¥ÈÆâ¤Ë¤Ï¤¢¤ê¤Þ¤»¤ó¤Î¤Ç¡¢¿·¤·¤¯ÊÑ¿ô¤òÍѰդ·¤Æ¡¢¥¥ã¥é¥â¥Ç¥ë¤ÎÀ©¸æ¤ò¹Ô¤¨¤ë¾õÂ֤ˤ·¤Þ¤¹¡£
¡¡Sequence µ¡Ç½¤òÍøÍѤ·¤Æ¡¢¥¥ã¥é¥â¥Ç¥ë¤Î¥µ¥¤¥º¤ò¾¯¤·Â礤á¤ËÊѹ¹¤·¡¢¸µ¤ËÌ᤹¤È¤¤¤¦½èÍý¤ò¤·¤Æ¤ß¤Þ¤·¤ç¤¦¡£
¤Ó¤è¡¼¤ó¡¢¤È¤¤¤¦´Ë¤¤´¶¤¸¤Ç¥¥ã¥é¤¬Åо줹¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
GameManager.cs

¡¡<=¡¡¥¯¥ê¥Ã¥¯¤¹¤ë¤È³«¤¤Þ¤¹
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GameManager : MonoBehaviour
{
[Header("¥²¡¼¥à½ªÎ»È½ÄêÃÍ")]
public bool isGameUp;
[SerializeField]
private DefenseBase defenseBase;
[SerializeField]
private PlayerController playerController;
[SerializeField]
private EnemyGenerator enemyGenerator;
[SerializeField]
private Transform temporaryObjectContainerTran;
[SerializeField]
private GameObject fireworksPrefab; // ²Ö²Ð¤Î¥×¥ì¥Õ¥¡¥Ö¤Î¾ðÊó¤ò¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¤è¤ê»öÁ°¤Ë¥¢¥µ¥¤¥ó¤·ÅÐÏ¿¤¹¤ë
[SerializeField]
private Transform canvasTran;¡¡¡¡¡¡¡¡¡¡¡¡ // ²Ö²Ð¤ÎÀ¸À®¤¹¤ë°ÌÃ֤ξðÊó¤ò¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¤è¤ê»öÁ°¤Ë¥¢¥µ¥¤¥ó¤·¤ÆÅÐÏ¿¤¹¤ë
////* ¤³¤³¤«¤éÊÑ¿ô¤òÄɲ乤롡*////
[SerializeField]
private GameObject charaObj;¡¡¡¡¡¡¡¡¡¡¡¡¡¡ // ¥¥ã¥é¥â¥Ç¥ë¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î¾ðÊó¤ò¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¤è¤ê»öÁ°¤Ë¥¢¥µ¥¤¥ó¤·¤ÆÅÐÏ¿¤¹¤ë
////* ¤³¤³¤Þ¤Ç¡¡*////
public UIManager uiManager;
public BulletSelectManager bulletSelectManager;¡¡¡¡¡¡// ¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¤è¤ê»öÁ°¤Ë¥¢¥µ¥¤¥ó¤·¤ÆÅÐÏ¿¤¹¤ë
public bool isSetUpEnd; // Start ¥á¥½¥Ã¥ÉÆâ¤Î½èÍý¤Î½àÈ÷½ªÎ»È½ÄêÍÑ¡£Start ¥á¥½¥Ã¥ÉÆâ¤Î½èÍý¤¬¤¹¤Ù¤Æ½ªÎ»¤·¤¿¤é½àÈ÷´°Î»¤È¤Ê¤ê true
¡¡¡¡IEnumerator Start()
¡¡¡¡{
// ½àÈ÷³«»Ï
isSetUpEnd = false;
// ¥²¡¼¥à½ªÎ»¤ÎȽÄê¤ò¡¢¡Ö¥²¡¼¥à¤¬½ªÎ»¤·¤Æ¤¤¤Ê¤¤¡×¾õÂ֤ˤ¹¤ë
SwitchGameUp(false);
¡¡¡¡¡¡¡¡// Main ÍѤΠBGM ¤òºÆÀ¸
SoundManager.instance.PlayBGM(SoundDataSO.BgmType.Main);
// DefenseBase ¥¹¥¯¥ê¥×¥È¤ËÍѰդ·¤¿¡¢DefenseBase ¤ÎÀßÄê¤ò¹Ô¤¦¤¿¤á¤Î SetUpDefenseBase ¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤¹¡£°ú¿ô¤È¤·¤Æ GameManager ¤Î¾ðÊó¤òÅϤ¹
defenseBase.SetUpDefenseBase(this);
// PlayerController ¥¹¥¯¥ê¥×¥È¤ËÍѰդ·¤¿¡¢PlayerController ¤ÎÀßÄê¤ò¹Ô¤¦¤¿¤á¤Î SetUpPlayer ¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤¹¡£°ú¿ô¤È¤·¤Æ GameManager ¤Î¾ðÊó¤òÅϤ¹
playerController.SetUpPlayer(this);
// EnemyGenerator¤Î½é´üÀßÄê
enemyGenerator.SetUpEnemyGenerator(this);
¡¡¡¡¡¡¡¡// TransformHelper ¥¹¥¯¥ê¥×¥È¤Î temporaryObjectContainerTran ÊÑ¿ô¤Ë¾ðÊó¤òÅϤ¹
TransformHelper.SetTemporaryObjectContainerTran(temporaryObjectContainerTran);
// GameClearSet ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ò¸«¤¨¤Ê¤¤¾õÂ֤ˤ¹¤ë
uiManager.HideGameClearSet();
// GameOverSet ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ò¸«¤¨¤Ê¤¤¾õÂ֤ˤ¹¤ë
uiManager.HideGameOverSet();
// BossAlertSet ¤ò±£¤¹
uiManager.HideBossAlertSet();
////* ¤³¤³¤«¤é½èÍý¤òÄɲ乤롡*////
// ¥¥ã¥é¤Î¸½ºß¤Î¥µ¥¤¥º¤òÊÝ»ý¤·¡¢°ì»þ¡¢¸«¤¨¤Ê¤¯¤¹¤ë
float scaleX = charaObj.transform.localScale.x;
charaObj.transform.localScale = Vector3.zero;
////* ¤³¤³¤Þ¤Ç *////
¡¡¡¡¡¡¡¡// ¥Ð¥ì¥Ã¥ÈÁªÂòÍѤΥܥ¿¥ó¤òÀ¸À®¡£¤³¤Î½èÍý¤¬½ªÎ»¤¹¤ë¤Þ¤Ç¡¢¼¡¤Î½èÍý¤Ïư¤«¤Ê¤¤
yield return StartCoroutine(bulletSelectManager.GenerateBulletSelectDetail(this));
// ¥²¡¼¥à¥¹¥¿¡¼¥È»þ¤Î±é½Ð
yield return StartCoroutine(uiManager.PlayOpening());
////* ¤³¤³¤«¤é½èÍý¤òÄɲ乤롡*////
// ¥¥ã¥éɽ¼¨(¥¹¥¿¡¼¥È±é½Ð¤ÎÅÓÃæ¤Ç¥¥ã¥é¤ò¥¿¥¤¥ß¥ó¥°¤è¤¯É½¼¨¤µ¤»¤ë)
Sequence sequence = DOTween.Sequence();
// ¥¥ã¥é¤ò¾¯¤·Â礤á¤Ëɽ¼¨
sequence.Append(charaObj.transform.DOScale(Vector3.one * 1.3f, 0.5f).SetEase(Ease.Linear));
¡¡¡¡¡¡¡¡// ¾å¤Î Append ¥á¥½¥Ã¥É½ªÎ»¸å¡¢¸µ¤ÎÂ礤µ¤ËÌ᤹
sequence.Append(charaObj.transform.DOScale(Vector3.one * scaleX, 0.05f).SetEase(Ease.Linear));
// ¥¹¥¿¡¼¥È±é½Ð¤¬½ªÎ»¤¹¤ë¤Þ¤Ç°ì»þ½èÍý¤òÃæÃǤ·¤ÆÂÔµ¡(¤³¤Î´Ö¤Ë¥¥ã¥é¤Ï¸µ¤ÎÂ礤µ¤ËÌá¤Ã¤Æ¤¤¤ë)
yield return new WaitForSeconds(1.0f);
// TODO ³«»Ï»þ¤Î Voice ¤Ê¤É
yield return new WaitForSeconds(0.5f);
////* ¤³¤³¤Þ¤Ç *////
// »ÈÍѤǤ¤ë¥Ð¥ì¥Ã¥È¤Î³Îǧ¤È¹¹¿·
bulletSelectManager.JugdeOpenBullets();
// ½àÈ÷´°Î»¾õÂ֤ˤ¹¤ë
isSetUpEnd = true;
}
/// <summary>
/// ¥²¡¼¥à½ªÎ»¾õÂÖ¤ÎÀÚ¤êÂØ¤¨
/// </summary>
/// <param name="isSwitch"></param>
public void SwitchGameUp(bool isSwitch) {
// isGameUp ¤ÎÃͤò°ú¿ô¤ÎÃͤËÀÚ¤êÂØ¤¨¤ë
isGameUp = isSwitch;
// ¥²¡¼¥à½ªÎ»¤Î¾õÂ֤ξì¹ç
if (isGameUp) {
// ²èÌ̤˻ĤäƤ¤¤ë¥¨¥Í¥ß¡¼¤ò¤¹¤Ù¤ÆÇ˲õ¤¹¤ë
enemyGenerator.ClearEnemiesList();
// °ì»þ¥ª¥Ö¥¸¥§¥¯¥È¤òÇ˲õ¤¹¤ë(»Ò¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤¢¤ë¡¢¥Ü¥¹¤Î¥¨¥Í¥ß¡¼¤Î¥Ð¥ì¥Ã¥È¤ä¥¨¥Õ¥§¥¯¥È¤Ê¤É¤â°ì½ï¤ËÇ˲õ¤µ¤ì¤ë)
enemyGenerator.DestroyTemporaryObjectContainer();
}
}
/// <summary>
/// ¥²¡¼¥à¥¯¥ê¥¢¤Î½àÈ÷
/// </summary>
public void PreparateGameClear() {
// ¥²¡¼¥à¥¯¥ê¥¢¤Îɽ¼¨¤ò¹Ô¤¦
uiManager.DisplayGameClearSet();
// ²Ö²Ð¤Î±é½Ð
StartCoroutine(GenerateFireWorks());
}
/// <summary>
/// ¥²¡¼¥à¥ª¡¼¥Ð¡¼¤Î½àÈ÷
/// </summary>
public void PreparateGameOver() {
// ¥²¡¼¥à¥ª¡¼¥Ð¡¼¤Îɽ¼¨¤ò¹Ô¤¦
uiManager.DisplayGameOverSet();
}
/// <summary>
/// ¥×¥ì¥¤¥ä¡¼¤È¥¨¥Í¥ß¡¼¤È¤Î°ÌÃÖ¤«¤éÊý¸þ¤òȽÄê
/// </summary>
/// <returns></returns>
public Vector3 GetPlayerDirection(Vector3 enemyPos) {
return (playerController.transform.position - enemyPos).normalized;
}
/// <summary>
/// ¥é¥ó¥À¥à¤Ê¿ô¤Î²Ö²Ð¤ÎÀ¸À®
/// </summary>
private IEnumerator GenerateFireWorks() {
yield return new WaitForSeconds(1.5f);
¡¡¡¡¡¡¡¡// ¥é¥ó¥À¥à¤ÊÃͤò¼èÆÀ¤·¡¢¤½¤Î²ó¿ô¤À¤±½èÍý¤ò·«¤êÊÖ¤¹
for (int i = 0; i < Random.Range(5, 8); i++) {
¡¡¡¡¡¡¡¡¡¡¡¡// ²Ö²Ð¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ÎÀ¸À®
GameObject fireworks = Instantiate(fireworksPrefab, canvasTran, false);
// ²Ö²Ð¤Î¿§¤òÊѹ¹¤¹¤ë¤¿¤á¤Ë¡¢²Ö²Ð¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë¥¢¥¿¥Ã¥Á¤µ¤ì¤Æ¤¤¤ë¥Ñ¡¼¥Æ¥£¥¯¥ë¥·¥¹¥Æ¥à¤Î¥á¥¤¥ó¤Î¾ðÊó(Duration ¤ä StartColor ¤Î¾ðÊ󤬤¢¤ëÉôʬ)¤ò¼èÆÀ
ParticleSystem.MainModule main = fireworks.GetComponent<ParticleSystem>().main;
// ¥Ñ¡¼¥Æ¥£¥¯¥ë¤Î¿§¤ò¥é¥ó¥À¥à¤Ê£²¿§¤ËÊѹ¹
¡¡¡¡¡¡¡¡¡¡¡¡main.startColor = GetNewTwoRandomColors();
// ²Ö²Ð¤Î°ÌÃÖ¤ò¥é¥ó¥À¥à¤ÊÃͤò²Ã¤¨¤ÆÊѹ¹
fireworks.transform.localPosition = new Vector3(fireworks.transform.localPosition.x + Random.Range(-500, 500), fireworks.transform.localPosition.y + Random.Range(700, 1000));
¡¡¡¡¡¡¡¡¡¡¡¡// »ØÄꤷ¤¿Éÿô¸å¤Ë²Ö²Ð¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òÇ˲õ
Destroy(fireworks, 3f);
¡¡¡¡¡¡¡¡¡¡¡¡// ¼¡¤ÎÀ¸À®¤Þ¤Ç°ì»þ½èÍý¤òÃæÃÇ(¤³¤¦¤¹¤ë¤³¤È¤Ç¡¢£±¤Ä¤Î²Ö²Ð¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤¬À¸À®¤µ¤ì¤Æ¤«¤é£±Éøå¤Ë¼¡¤Î²Ö²Ð¤ÎÀ¸À®¤ò¹Ô¤¦¤³¤È¤¬¤Ç¤¤ë)
yield return new WaitForSeconds(1.0f);
}
}
/// <summary>
/// ¥Ñ¡¼¥Æ¥£¥¯¥ë¤Î¿§¤ò¥é¥ó¥À¥à¤ÇÀßÄê
/// </summary>
/// <returns></returns>
private ParticleSystem.MinMaxGradient GetNewTwoRandomColors() {
// ¥Ñ¡¼¥Æ¥£¥¯¥ë¥·¥¹¥Æ¥àÍѤ理ÎÀßÄê¤ò¹Ô¤¦¤¿¤á¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤òºîÀ®¤·¤Æ¡¢¥³¥ó¥¹¥È¥é¥¯¥¿¤òÍøÍѤ·¤Æ¿§¤ò£²¿§ÀßÄꤷ¤Æ½é´ü²½
return new ParticleSystem.MinMaxGradient(GetRandomColor(), GetRandomColor());
}
/// <summary>
/// ¥é¥ó¥À¥à¤Ê¿§¤ò¼èÆÀ
/// </summary>
/// <returns></returns>
private Color GetRandomColor() {
¡¡¡¡¡¡¡¡// Color32 ¤Ï byte ·¿¤Ç¿§¤Î»ØÄ꤬²Äǽ¤Ê¤Î¤Ç¡¢¿§¤Î³ÆÀ®Ê¬ÍѤÎÃͤò Random.Range ¥á¥½¥Ã¥É¤òÍøÍѤ·¤Æ int ·¿¤Ç¼èÆÀ¤·¡¢byte ·¿¤Ë¥¥ã¥¹¥È¤·¤Æ»ØÄê
return new Color32((byte)Random.Range(0, 255), (byte)Random.Range(0, 255), (byte)Random.Range(0, 255), 255);
}
}
¡¡¥¹¥¯¥ê¥×¥È¤ò½¤Àµ¤·¤¿¤é¥»¡¼¥Ö¤·¤Þ¤¹¡£
¡¡GameManager ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òÁªÂò¤·¤Æ GameManager ¥¹¥¯¥ê¥×¥È¤ò³Îǧ¤·¤Þ¤¹¡£
¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¤Ë¿·¤·¤¯Àë¸À¤·¤¿ÊÑ¿ô¤¬É½¼¨¤µ¤ì¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢¥Ò¥¨¥é¥ë¥¡¼¤Ë¤¢¤ë Little_Cat_Girl ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ò
¥É¥é¥Ã¥°¥¢¥ó¥É¥É¥í¥Ã¥×¤·¤Æ¥¢¥µ¥¤¥ó¤·¤ÆÅÐÏ¿¤·¤Þ¤¹¡£
GameManager ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¡¡¥¤¥ó¥¹¥Ú¥¯¥¿¡¼²èÁü
¡¡°Ê¾å¤Ç¥¹¥¯¥ê¥×¥È¤Î½¤Àµ¤ÈÀßÄê¤Ï´°Î»¤Ç¤¹¡£
¥³¥á¥ó¥È¤ò¤«¤¯