£·£´¡¥BulletDataSO ¥¹¥¯¥ê¥×¥¿¥Ö¥ë¡¦¥ª¥Ö¥¸¥§¥¯¥È¤ò½¤Àµ¤·¡¢¥¨¥Í¥ß¡¼ÍѤΥХì¥Ã¥È¤Î¥Ç¡¼¥¿¤òÄɲä¹¤ë £·£µ¡¥EnemyContorlller ¥¹¥¯¥ê¥×¥È¤È¡¢ BulletSelectManager ¥¹¥¯¥ê¥×¥È¤È¡¢EnemyGenerator ¥¹¥¯¥ê¥×¥È¤ò½¤Àµ¤·¡¢¥¨¥Í¥ß¡¼¤Îȯ¼Í¤¹¤ë¥Ð¥ì¥Ã¥È¤Ë¤â BulletData ¤Î¾ðÊó¤òÍøÍѤǤ¤ë¤è¤¦¤Ë¤¹¤ë
¡¡¡¦BulletData ¤Î¾ðÊó¤ò¤É¤Î¤è¤¦¤Ë¤¹¤ì¤ÐÍøÍѤǤ¤ë¤è¤¦¤Ë¤Ê¤ë¤«¡¢¥í¥¸¥Ã¥¯¤ò¹Í¤¨¤ë
¡¦¥¨¥Í¥ß¡¼¤Îȯ¼Í¤¹¤ë¥Ð¥ì¥Ã¥È¤Î¾ðÊó¤ò¸ÇÄêÃͤǤϤʤ¯¡¢BulletData ¤ËÅÐÏ¿¤·¤¿¾ðÊó¤òÍøÍѤǤ¤ë¤è¤¦¤Ë¤¹¤ë¡¡
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using DG.Tweening; using UnityEngine.Events; [RequireComponent(typeof(CapsuleCollider2D))] public class EnemyController : MonoBehaviour [Header("¥¨¥Í¥ß¡¼¤Î¥Ç¡¼¥¿¾ðÊó")] public EnemyDataSO.EnemyData enemyData; // SetUpEnemy ¥á¥½¥Ã¥É¤Ë¤Æ°ú¿ô¤È¤·¤Æ¼õ¤±¤È¤Ã¤¿¥¨¥Í¥ß¡¼¤Î¥Ç¡¼¥¿¤òÂåÆþ¤¹¤ë¡£¤³¤ì¤Ë¤è¤ê¡¢¿¶¤ëÉñ¤¤¤¬ÊѤï¤ë [SerializeField] private Image imgEnemy; // ¥¨¥Í¥ß¡¼¤Î²èÁü¤ÎÀßÄêÍÑ¡¡¡¡¡¡ [SerializeField] private Slider slider; [SerializeField] private GameObject bulletEffectPrefab; // ¥Ò¥Ã¥È±é½ÐÍѤΥ¨¥Õ¥§¥¯¥È¤Î¥×¥ì¥Õ¥¡¥Ö¤ò¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¤è¤ê¥¢¥µ¥¤¥ó¤·¤ÆÅÐÏ¿¤¹¤ë [SerializeField] private GameObject enemybulletPrefab; // EnemyBullet ¥×¥ì¥Õ¥¡¥Ö¡¦¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ò¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¤è¤ê¥¢¥µ¥¤¥ó¤·¤ÆÅÐÏ¿¤¹¤ë [SerializeField, Header("¥Õ¥í¡¼¥Èɽ¼¨¤ò¹Ô¤¦°ÌÃÖ¾ðÊó")] private Transform floatingDamageTran; [SerializeField] private FloatingMessage floatingMessagePrefab; // FloatingMessageObj ¥×¥ì¥Õ¥¡¥Ö¡¦¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ò¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¤è¤ê¥¢¥µ¥¤¥ó¤·¤ÆÅÐÏ¿¤¹¤ë private int maxHp; // HP¤ÎºÇÂçÃͤòÂåÆþ¤¹¤ëÊÑ¿ô private int hp; // ¥¨¥Í¥ß¡¼¤ÎHP¡£EnemyData ¤ÇHp¤ÎÃͤ¬¼èÆÀ¤Ç¤¤ë¤Î¤Ç¡¢¤½¤ì¤òÂåÆþ¤¹¤ë¡£public ¤Ë¤·¤Æ¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¤ÇÀßÄꤹ¤ëɬÍפʤ· private EnemyGenerator enemyGenerator; // EnemyGenerator ¤òÍøÍѤ¹¤ë¤¿¤á¤ÎÊÑ¿ô private UnityAction<Transform, float> moveEvent; // UnityAction<Transform, float> ·¿¤Î moveEvent ÊÑ¿ô¤ÈÆɤࡣ¤³¤³¤Ë¥¨¥Í¥ß¡¼¤Î°ÜÆ°ÊýË¡¤Ë±þ¤¸¤¿°ÜÆ°ÍѤΥ᥽¥Ã¥É¤òÅÐÏ¿¤¹¤ë /// <summary> /// ¥¨¥Í¥ß¡¼¤ÎÀßÄê /// </summary> ¡¡¡¡public void SetUpEnemy(EnemyDataSO.EnemyData enemyData) { ¡¡¡¡¡¡¡¡// °ú¿ô¤ÇÆϤ¤¤¿ EnemyData ¤òÂåÆþ¤¹¤ë this.enemyData = enemyData; // ¥Ü¥¹¤Ç¤Ï¤Ê¤¤¾ì¹ç if (this.enemyData.enemyType != EnemyType.Boss) { // ¥¨¥Í¥ß¡¼¤Î X ¼´(º¸±¦)¤Î°ÌÃÖ¤ò¡¢¥²¡¼¥à²èÌ̤˼ý¤Þ¤ëÈϰϤǥé¥ó¥À¥à¤Ê°ÌÃÖ¤ËÊѹ¹ transform.localPosition = new Vector3(transform.localPosition.x + Random.Range(-650, 650), transform.localPosition.y, 0); } else { // ¥Ü¥¹¤Î°ÌÃÖ¤ò½ù¡¹¤Ë²¼Êý¸þ¤ËÊѹ¹ transform.DOLocalMoveY(transform.localPosition.y - 500, 3.0f); // ¥Ü¥¹¤Î¾ì¹ç¡¢¥µ¥¤¥º¤òÂ礤¯¤¹¤ë transform.localScale = Vector3.one * 2.0f; // Hp¥²¡¼¥¸¤Î°ÌÃÖ¤ò¹â¤¤°ÌÃ֤ˤ¹¤ë slider.transform.localPosition = new Vector3(0, 150, 0); } // ²èÁü¤ò EnemyData ¤Î²èÁü¤Ë¤¹¤ë¡¡=>¡¡¤³¤³¤Ç¥¨¥Í¥ß¡¼¤´¤È¤Î²èÁü¤ËÊѹ¹¤¹¤ë imgEnemy.sprite = this.enemyData.enemySprite; // EnemyData ¤è¤ê Hp ¤ÎÃͤòºÇÂçÃͤȤ·¤ÆÂåÆþ maxHp = this.enemyData.hp; // hp ¤òÀßÄê hp = maxHp; ¡¡¡¡¡¡¡¡// Hp¥²¡¼¥¸¤Îɽ¼¨¹¹¿· ¡¡¡¡¡¡¡¡DisplayHpGauge(); } // ¿¯ÆþȽÄê private void OnTriggerEnter2D(Collider2D col) { ¡¡¡¡¡¡¡¡// ¥Ð¥ì¥Ã¥È¤¬ÀÜ¿¨¤·¤¿¤é if (col.gameObject.tag == "Bullet") { // ¿¯Æþ¤·¤Æ¤¤¿¥³¥é¥¤¥À¡¼¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë Bullet ¥¹¥¯¥ê¥×¥È¤¬¥¢¥¿¥Ã¥Á¤µ¤ì¤Æ¤¤¤¿¤é¼èÆÀ¤·¤Æ bullet ÊÑ¿ô¤ËÂåÆþ¤·¤Æ¡¢if ʸ¤ÎÃæ¤Î½èÍý¤ò¹Ô¤¦ if (col.gameObject.TryGetComponent(out Bullet bullet)) { // HP¤Î¹¹¿·½èÍý¤È¥¨¥Í¥ß¡¼¤ÎÇ˲õ³Îǧ¤Î½èÍý¤ò¸Æ¤Ó½Ð¤¹ UpdateHp(bullet);¡¡ // ¥Ð¥ì¥Ã¥È¤Î¥Ò¥Ã¥È±é½ÐÍÑ¥¨¥Õ¥§¥¯¥È¤ÎÀ¸À® GenerateBulletEffect(col.gameObject.transform); } } } /// <summary> /// ¥Ð¥ì¥Ã¥È¤ÎÇ˲õ½èÍý /// </summary> private void DestroyBullet(Collider2D col) { // ¥Ð¥ì¥Ã¥È¤òÇ˲õ¤¹¤ë Destroy(col.gameObject); } /// <summary> /// Hp¤Î¹¹¿·½èÍý¤È¥¨¥Í¥ß¡¼¤ÎÇ˲õ³Îǧ½èÍý /// </summary> private void UpdateHp(Bullet bullet) { ¡¡¡¡¡¡¡¡// ¥À¥á¡¼¥¸³ÎÄêÍÑ int bulletPower = 0; ¡¡¡¡¡¡¡¡// ¼åÅÀȽÄêÍÑ¡£¼åÅÀ¤Î¾ì¹ç¤Ë¤Ï¡¢true ¤ËÀÚ¤êÂؤ¨¤ë bool isWeakness = false; // ¥Ð¥ì¥Ã¥È¤Î°À¤È¥¨¥Í¥ß¡¼¤Î°À¤Î¾ðÊó¤òÍøÍѤ·¤ÆÁêÀ¤òȽÄê if(ElementCompatibilityHelper.GetElementCompatibility(bullet.bulletData.elementType, enemyData.elementType) == true) { Debug.Log("Element ÁêÀ¡¡ÎÉ"); // ¥Ð¥ì¥Ã¥È¤Î¹¶·âÎϤò¥À¥á¡¼¥¸ÇÜΨʬ³Ý¤±¤¿Ãͤˤ·¤Æ¡¢·×»»·ë²Ì¤òÀÚ¤ê¾å¤²¤Æ int ·¿¤Ë¤¹¤ë bulletPower = Mathf.FloorToInt(bullet.bulletData.bulletPower * GameData.instance.GetDamageRatio()); // ¼åÅÀ¤È¤·¤ÆÀßÄê isWeakness = true; } else { // ¥Ð¥ì¥Ã¥È¤Î¹¶·âÎϤò¤½¤Î¤Þ¤ÞÍøÍѤ¹¤ë bulletPower = bullet.bulletData.bulletPower; } ¡¡¡¡¡¡¡¡// ¥Ð¥ì¥Ã¥È¤Î¹¶·âÎÏÃÍÍÑ¤Î¥Õ¥í¡¼¥Èɽ¼¨¤ÎÀ¸À® CreateFloatingMessageToBulletPower(bulletPower, isWeakness); // hp¤Î¸º»»½èÍý hp -= bulletPower; ¡¡¡¡ // Hp ¤ÎÃͤξå¸Â¡¦²¼¸Â¤ò³Îǧ¤·¤ÆÈÏ°ÏÆâ¤ËÀ©¸Â ¡¡¡¡¡¡¡¡hp = Mathf.Clamp(hp, 0, maxHp); // HP¥²¡¼¥¸¤Îɽ¼¨¹¹¿· DisplayHpGauge(); if (hp <= 0) { hp = 0; // ¥Ü¥¹¤Î¾ì¹ç if (enemyData.enemyType == EnemyType.Boss) { // ¥Ü¥¹Æ¤È²ºÑ¤ß¤Î¾õÂ֤ˤ¹¤ë enemyGenerator.SwitchBossDestroyed(true); } // Exp ¤ò TotalExp ¤Ë²Ã»» GameData.instance.UpdateTotalExp(enemyData.exp); // ºÇ¿·¤Î TotapExp ¤òÍøÍѤ·¤Æɽ¼¨¹¹¿· enemyGenerator.PreparateDisplayTotalExp(enemyData.exp); // ¤³¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òÇ˲õ¤¹¤ë Destroy(gameObject); } // ¥Î¡¼¥Þ¥ëÃƤξì¹ç if (bullet.bulletData.bulletType == BulletDataSO.BulletType.Player_Normal || bullet.bulletData.bulletType == BulletDataSO.BulletType.Player_5ways_Normal) { // ¥Ð¥ì¥Ã¥È¤òÇ˲õ Destroy(bullet.gameObject); } } /// <summary> /// HP¥²¡¼¥¸¤Îɽ¼¨¹¹¿· /// </summary> private void DisplayHpGauge() { ¡¡¡¡¡¡¡¡// HP¥²¡¼¥¸¤ò¸½ºßÃͤ˹ç¤ï¤»¤ÆÀ©¸æ slider.DOValue((float)hp / maxHp, 0.25f); } /// <summary> /// Èï¥Ð¥ì¥Ã¥È»þ¤Î¥Ò¥Ã¥È±é½ÐÍѤΥ¨¥Õ¥§¥¯¥ÈÀ¸À® /// </summary> ¡¡¡¡/// <param name="bulletTran"></param> private void GenerateBulletEffect(Transform bulletTran) { ¡¡¡¡¡¡¡¡// ¥Ò¥Ã¥È±é½ÐÍѤΥ¨¥Õ¥§¥¯¥È¤ò¡¢¥Ð¥ì¥Ã¥È¤Î¤Ö¤Ä¤«¤Ã¤¿°ÌÃÖ¤ÇÀ¸À® GameObject effect = Instantiate(bulletEffectPrefab, bulletTran, false); // ¥¨¥Õ¥§¥¯¥È¤ò¥¨¥Í¥ß¡¼¤Î»Ò¥ª¥Ö¥¸¥§¥¯¥È¤Ë¤¹¤ë effect.transform.SetParent(transform); Destroy(effect, 3.0f); } ////* ¤³¤³¤«¤é¡þ¡¡¢¡þ¢¡¢¡þ£¤ò½¤Àµ *//// /// <summary> /// ¥¨¥Í¥ß¡¼¤ÎÄɲÃÀßÄê /// </summary> /// <param name="enemyGenerator"></param> /// <param name="bulletData"></param> public void AdditionalSetUpEnemy(EnemyGenerator enemyGenerator, BulletDataSO.BulletData bulletData) {¡¡¡¡ ¡¡// <= ¡þ¡¡¡Âè2°ú¿ô¤òÄɲä·¤Þ¤¹ // °ú¿ô¤ÇÆϤ¤¤¿¾ðÊó¤òÊÑ¿ô¤ËÂåÆþ¤·¤Æ¥¹¥¯¥ê¥×¥ÈÆâ¤ÇÍøÍѤǤ¤ë¾õÂ֤ˤ¹¤ë this.enemyGenerator = enemyGenerator; // MoveEventSO ¥¹¥¯¥ê¥×¥¿¥Ö¥ë¡¦¥ª¥Ö¥¸¥§¥¯¥È¤Î GetMoveEvent ¥á¥½¥Ã¥É¤ò¼Â¹Ô¤·¡¢Ìá¤êÃͤǰÜÆ°ÍѤΥ᥽¥Ã¥É¤ò¼õ¤±¼è¤ë¡£¤³¤³¤Ç°ÜÆ°ÊýË¡¤ò·èÄê moveEvent = this.enemyGenerator.moveEventSO.GetMoveEvent(enemyData.moveType); // Invoke ¥á¥½¥Ã¥É¤ò¼Â¹Ô¤¹¤ë¤È¡¢moveEvent ÊÑ¿ô¤ËÅÐÏ¿¤µ¤ì¤¿¥á¥½¥Ã¥É(º£²ó¤Ï°ÜÆ°ÍѤΥ᥽¥Ã¥É)¤ò¼Â¹Ô¤¹¤ë¡£UnityActon <Transform, float>·¿¤Ê¤Î¤Ç¡¢¼Â¹Ô¤Ë¤¢¤¿¤Ã¤Æ¡¢»ØÄꤵ¤ì¤¿·¿¤Î¾ðÊó¤ò»ØÄꤹ¤ë moveEvent.Invoke(transform, enemyData.moveDuration); // ¥Ð¥ì¥Ã¥È¤Î¥Ç¡¼¥¿¤¬¤¢¤ê¡¢¤«¤Ä¡¢¥Ð¥ì¥Ã¥È¤Î¼ïÎब None ¤Ç¤Ï¤Ê¤¤¾ì¹ç if (bulletData != null && bulletData.bulletType != BulletDataSO.BulletType.None) { // <= ¡þ¢¡¡¾ò·ï¼°¤òÊѹ¹¤·¤Þ¤¹ ¡¡¡¡¡¡¡¡¡¡¡¡// ¥Ð¥ì¥Ã¥È¤Î¼«Æ°À¸À®½èÍý¤ò¼Â¹Ô¤¹¤ë StartCoroutine(EnemyShot(bulletData)); ¡¡// <= ¡þ£¡¡°ú¿ô¤òÄɲä·¤Þ¤¹ } ////* ¤³¤³¤Þ¤Ç *//// Debug.Log("ÄɲÃÀßÄ괰λ"); } ////* ¤³¤³¤«¤é¡ù¡¡¢¡ù¢¡¢¡ù£¤ò½¤Àµ *//// /// <summary> /// ¥Ð¥ì¥Ã¥È¤Î¼«Æ°À¸À® /// </summary> /// <returns></returns> private IEnumerator EnemyShot(BulletDataSO.BulletData bulletData) { ¡¡// <= ¡ù¡¡¡°ú¿ô¤òÄɲä·¤Þ¤¹ // ¾ò·ï¤Ë true ¤ò»ØÄꤹ¤ë¤È̵À©¸Â¤Î¥ë¡¼¥×½èÍý¤Ë¤Ê¤ë while (true) { // ¥¨¥Í¥ß¡¼¤Î¥Ð¥ì¥Ã¥È¤Î¥¯¥í¡¼¥ó¤òÀ¸À®¤·¡¢Ìá¤êÃͤò bulletObj ÊÑ¿ô¤ËÂåÆþ GameObject bulletObj = Instantiate(enemyBulletPrefab, transform); ¡¡¡¡¡¡¡¡¡¡¡¡// ¥¯¥í¡¼¥ó¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤«¤é Bullet ¥¹¥¯¥ê¥×¥È¤ò¼èÆÀ¤·¤Æ¡¢ShotBullet ¥á¥½¥Ã¥É¤ò¼Â¹Ô¤¹¤ë bulletObj.GetComponent<Bullet>().ShotBullet(enemyGenerator.PreparateGetPlayerDirection(transform.position), bulletData); // <= ¡ù¢¡¡Âè2°ú¿ô¤òÄɲä·¤Þ¤¹ // ¥Ü¥¹¤Î¾ì¹ç if (enemyData.moveType == MoveType.Boss_Horizontal) { // ¥Ð¥ì¥Ã¥È¤È¥¨¥Í¥ß¡¼¤Î¿Æ»Ò´Ø·¸¤ò²ò¾Ã¤·¡¢¥Ð¥ì¥Ã¥È¤Î¿Æ¤ò TemporaryObjectContainer ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ËÊѹ¹¤¹¤ë bulletObj.transform.SetParent(TransformHelper.GetTemporaryObjectContainerTran()); } ¡¡¡¡¡¡¡¡¡¡¡¡// BulletData ¤ËÀßÄꤵ¤ì¤Æ¤¤¤ëÂÔµ¡»þ´Öʬ¤À¤±½èÍý¤òÃæÃǤ¹¤ë(ÂÔµ¡¤¹¤ë) yield return new WaitForSeconds(bulletData.loadingTime); // <= ¡ù£¡¡°ú¿ô¤ò¸ÇÄêÃͤ«¤é¡¢¥Ð¥ì¥Ã¥È¸ÇͤÎÃͤËÊѹ¹¤·¤Þ¤¹ ////* ¤³¤³¤Þ¤Ç *//// } } /// <summary> /// ¥Ð¥ì¥Ã¥È¤Î¹¶·âÎÏÃÍʬ¤Î¥Õ¥í¡¼¥Èɽ¼¨¤ÎÀ¸À® /// </summary> /// <param name="bulletPower"></param> /// <param name="isWeakness"></param> private void CreateFloatingMessageToBulletPower(int bulletPower, bool isWeakness) { // ¥Õ¥í¡¼¥Èɽ¼¨¤ÎÀ¸À®¡£À¸À®°ÌÃÖ¤Ï EnemySet ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥ÈÆâ¤Î FloatingMessageTran ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î°ÌÃÖ(»Ò¥ª¥Ö¥¸¥§¥¯¥È) FloatingMessage floatingMessage = Instantiate(floatingMessagePrefab, floatingDamageTran, false); // À¸À®¤·¤¿¥Õ¥í¡¼¥Èɽ¼¨¤ÎÀßÄêÍѥ᥽¥Ã¥É¤ò¼Â¹Ô¡£°ú¿ô¤È¤·¤Æ¡¢¥Ð¥ì¥Ã¥È¤Î¹¶·âÎÏÃÍ¤È¥Õ¥í¡¼¥Èɽ¼¨¤Î¼ïÎà¤ò»ØÄꤷ¤ÆÅϤ¹ floatingMessage.DisplayFloatingMessage(bulletPower, FloatingMessage.FloatingMessageType.EnemyDamage, isWeakness); } }
using System.Collections; using System.Collections.Generic; using UnityEngine; using System.Linq;¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//¡¡<=¡¡Äɲä·¤Þ¤¹¡£ public class BulletSelectManager : MonoBehaviour { [SerializeField] private BulletSelectDetail bulletSelectDetailPrefab;¡¡¡¡// BulletSelectDetail ¥¹¥¯¥ê¥×¥È¤¬¥¢¥¿¥Ã¥Á¤µ¤ì¤Æ¤¤¤ë¡¢¥×¥ì¥Õ¥¡¥Ö¤Î btnBulletSelect ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ò¥¢¥µ¥¤¥ó¤¹¤ë [SerializeField] private Transform bulletTran; // ¥Ð¥ì¥Ã¥ÈÁªÂò¥Ü¥¿¥ó¤ÎÀ¸À®°ÌÃ֤Ȥ·¤ÆÍøÍѤ¹¤ë¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ò¥¢¥µ¥¤¥ó¤¹¤ë private const int maxBulletBtnNum = 4; // ¥Ð¥ì¥Ã¥ÈÁªÂò¥Ü¥¿¥ó¤ÎºÇÂç¿ô¡£Äê¿ô¤È¤·¤ÆÀë¸À¤¹¤ë public List<BulletSelectDetail> bulletSelectDetailList = new List<BulletSelectDetail>(); // À¸À®¤µ¤ì¤¿¥Ð¥ì¥Ã¥ÈÁªÂò¥Ü¥¿¥ó¤Î List [SerializeField] private BulletDataSO bulletDataSO; // BulletDataSO ¥¹¥¯¥ê¥×¥¿¥Ö¥ë¡¦¥ª¥Ö¥¸¥§¥¯¥È¤ò¥¢¥µ¥¤¥ó¤¹¤ë [SerializeField] private ElementDataSO elementDataSO;¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ¡¡ // ElementDataSO ¥¹¥¯¥ê¥×¥¿¥Ö¥ë¡¦¥ª¥Ö¥¸¥§¥¯¥È¤ò¥¢¥µ¥¤¥ó¤¹¤ë private GameManager gameManager;¡¡ /// <summary> /// ¥Ð¥ì¥Ã¥ÈÁªÂòÍѥܥ¿¥ó¤ÎÀ¸À® /// </summary> /// <param name="gameManager"></param> /// <returns></returns> public IEnumerator GenerateBulletSelectDetail(GameManager gameManager) { this.gameManager = gameManager; // BulletDataSO ¥¹¥¯¥ê¥×¥¿¥Ö¥ë¡¦¥ª¥Ö¥¸¥§¥¯¥È¤Î¥Ç¡¼¥¿¤«¤é¡¢ÍøÍѼԤμïÎब Player ¤Î¥Ð¥ì¥Ã¥È¤Î¾ðÊó¤À¤±¤òÂåÆþ¤¹¤ë List ¤òÍÑ°Õ¤¹¤ë List<BulletDataSO.BulletData> playerBulletDatas = new List<BulletDataSO.BulletData>(); // ¥Ð¥ì¥Ã¥È¤ÎÍøÍѼԤμïÎब Player ¤Î¥Ð¥ì¥Ã¥È¤Î¾ðÊó¤À¤±¤òÃê½Ð¤·¤Æ List ¤òºîÀ®¤¹¤ë playerBulletDatas = bulletDataSO.bulletDataList.Where(x => x.liberalType == BulletDataSO.LiberalType.Player).ToList(); for (int i = 0; i < maxBulletBtnNum; i++) { // ¥Ð¥ì¥Ã¥È¥Ü¥¿¥óÀ¸À® BulletSelectDetail bulletSelectDetail = Instantiate(bulletSelectDetailPrefab, bulletTran, false); // TODO ¥Ð¥ì¥Ã¥È¥Ü¥¿¥ó¤ÎÀßÄê¡£¤Þ¤¿¸å¤Ç°ú¿ô¤ËÊѹ¹¤¬¤¢¤ê¤Þ¤¹ bulletSelectDetail.SetUpBulletSelectDetail(this, playerBulletDatas[i]); // ¥ê¥¹¥È¤ËÄɲà bulletSelectDetailList.Add(bulletSelectDetail); ¡¡¡¡¡¡¡¡¡¡¡¡// 0.25 ÉäÀ¤±½èÍý¤òÃæÃÇ(½çÈ֤˥ܥ¿¥ó¤¬À¸À®¤µ¤ì¤ë¤è¤¦¤Ë¤¹¤ë±é½Ð) yield return new WaitForSeconds(0.25f); } // »ÈÍѤ¹¤ë¥Ð¥ì¥Ã¥È¤Î¾ðÊó¤ò½é´üÀßÄê GameData.instance.SetBulletData(playerBulletDatas[0]); } /// <summary> /// ¤¹¤Ù¤Æ¤Î¥Ð¥ì¥Ã¥ÈÁªÂò¥Ü¥¿¥ó¤ËÂФ·¤Æ no ¤Ç¾È¹ç¤ò¹Ô¤¤¡¢ÁõŶÃæ¤È̤ÁõŶ¤Î¾õÂÖ¤òÊѹ¹ /// </summary> /// <param name="bulletNo"></param> public void ChangeLoadingBulletSettings(int bulletNo) { ¡¡¡¡¡¡¡¡// ¥Ð¥ì¥Ã¥ÈÁªÂò¥Ü¥¿¥ó¤Î List ¤ÎÍ×ÁǤò¤¹¤Ù¤Æ¼è¤ê½Ð¤·¡¢£±¤Ä¤º¤Ä½çÈ֤˽èÍý¤¹¤ë for (int i = 0; i < bulletSelectDetailList.Count; i++) { // ¤³¤ÎÍ×ÁǤΥХì¥Ã¥ÈÁªÂò¥Ü¥¿¥ó¤Î no ¤ÎÃͤ¬ bulletNo (ÁªÂò¤µ¤ì¤¿¥Ð¥ì¥Ã¥È)¤ÈƱ¤¸¤Ç¤¢¤ë¤Ê¤é if (bulletSelectDetailList[i].bulletData.no == bulletNo) { // ÁõŶÃæ¾õÂ֤ˤ¹¤ë bulletSelectDetailList[i].ChangeLoadingBullet(true); Debug.Log("ÁõŶÃæ¤Î¥Ð¥ì¥Ã¥È¤Î No " + bulletNo); ¡¡¡¡¡¡¡¡¡¡¡¡// ¤½¤ì°Ê³°¤Î no ¤Î¾ì¹ç¤Ë¤Ï } else { // ̤ÁõŶ¾õÂ֤ˤ¹¤ë bulletSelectDetailList[i].ChangeLoadingBullet(false); Debug.Log("̤ÁõŶ¤Î¥Ð¥ì¥Ã¥È¤Î No " + bulletNo); } } } /// <summary> /// ½é´ü¥Ð¥ì¥Ã¥È¤òÁõŶÃæ¤Î¥Ð¥ì¥Ã¥È¤È¤·¤ÆÀßÄê /// </summary> public void ActivateDefaultBullet() { // ¥Ð¥ì¥Ã¥ÈÁªÂò¥Ü¥¿¥ó¤Î List ¤«¤éÍ×ÁǤò£±¤Ä¤º¤Ä¼è¤ê½Ð¤¹ foreach (BulletSelectDetail bulletSelectDetail in bulletSelectDetailList) { // ½é´ü¥Ð¥ì¥Ã¥È¤ÎÀßÄ꤬¤¢¤ë¥Ð¥ì¥Ã¥È¤Î¥Ç¡¼¥¿¤Î¾ì¹ç if (bulletSelectDetail.isDefaultBullet) { // ¤½¤Î¥Ð¥ì¥Ã¥È¤òÁõŶÃæ¤Î¾õÂ֤ˤ¹¤ë bulletSelectDetail.OnClickBulletSelect(); Debug.Log("½é´ü¥Ð¥ì¥Ã¥È¤òÁõŶÃæ¤Î¥Ð¥ì¥Ã¥È¤È¤·¤ÆÀßÄê"); return; } } } /// <summary> /// »ÈÍѲÄǽ¥Ð¥ì¥Ã¥ÈÁªÂò¥Ü¥¿¥ó¤Î³Îǧ¤È¹¹¿· /// </summary> public void JugdeOpenBullets() { ¡¡¡¡¡¡¡¡// ·«¤êÊÖ¤·ÍøÍѤ¹¤ë¾ðÊó¤òÊÑ¿ô¤ËÂåÆþ¤·¤Æ¤ª¤¯ int totalExp = GameData.instance.GetTotalExp(); // ¥Ð¥ì¥Ã¥È¤´¤È¤Ë»ÈÍѲÄǽ¤ÊEXP¤òĶ¤¨¤Æ¤¤¤ë¤«³Îǧ foreach (BulletSelectDetail bulletData in bulletSelectDetailList) { // ¥²¡¼¥à½ªÎ»¤Î¾õÂ֤ˤʤ俤é if (gameManager.isGameUp) { // ¥Ð¥ì¥Ã¥ÈÁªÂò¥Ü¥¿¥ó¤òÈó³èÀ²½¤Î¾õÂ֤ˤ·¤Æ¥¿¥Ã¥×¤Ç¤¤Ê¤¤¾õÂ֤ˤ¹¤ë bulletData.SwitchActivateBulletBtn(false); continue; } // ¥³¥¹¥È¤ò»Ùʧ¤Ã¤Æ¤¤¤ë¤«¤É¤¦¤«¡¢Ìá¤êÃͤò»ý¤Ä¥á¥½¥Ã¥É¤òÍøÍѤ·¤Æ³Îǧ¤¹¤ë if (bulletData.GetStateBulletCostPayment()) { // ¥³¥¹¥È¤ò»Ùʧ¤¤ºÑ¤ß¤Î¾ì¹ç¡¢¤½¤Î¥Ð¥ì¥Ã¥ÈÁªÂò¥Ü¥¿¥ó¤Ï¥ª¥ó¤Î¾õÂ֤ˤ¹¤ë bulletData.SwitchActivateBulletBtn(true); continue; } // ¥Ð¥ì¥Ã¥È¤ËÀßÄꤵ¤ì¤Æ¤¤¤ë¥³¥¹¥È¤ÎÃͤè¤ê¤â¡¢Exp ¤Î¸½ºßÃͤÎÊý¤¬Â礤¤¤«Æ±¤¸¤Ç¤¢¤ì¤Ð if (bulletData.bulletData.openExp <= totalExp) { // ¤½¤Î¥Ð¥ì¥Ã¥ÈÁªÂò¥Ü¥¿¥ó¤ò³èÀ²½¤Î¾õÂ֤ˤ·¤Æ¥¿¥Ã¥×¤Ç¤¤ë¤è¤¦¤Ë¤¹¤ë bulletData.SwitchActivateBulletBtn(true); } else { // Exp ¤Î¸½ºßÃͤ¬Ä¶¤¨¤Æ¤¤¤Ê¤¤¥Ð¥ì¥Ã¥ÈÁªÂò¥Ü¥¿¥ó¤òÈó³èÀ²½¤Î¾õÂ֤ˤ·¤Æ¥¿¥Ã¥×¤Ç¤¤Ê¤¤¤è¤¦¤Ë¤¹¤ë bulletData.SwitchActivateBulletBtn(false); } } } /// <summary> /// ÁªÂò¤·¤¿¥Ð¥ì¥Ã¥È¤Î¥³¥¹¥È¤Î»Ùʧ¤¤¤È¤½¤ì¤Ë´ØÏ¢¤¹¤ë½èÍý /// </summary> /// <param name="costExp"></param> public void SelectedBulletCostPayment(int costExp) { // TotalExp(Exp ¤Î¸½ºßÃÍ) ¤è¤ê¡¢ÁªÂò¤·¤¿¥Ð¥ì¥Ã¥È¤Î¥³¥¹¥È¤ò¸º»» GameData.instance.UpdateTotalExp(-costExp); // ²èÌ̤ΠExp ɽ¼¨¸º»»¸å¤ÎÃͤ˹¹¿· gameManager.uiManager.DisplayTotalExp(GameData.instance.GetTotalExp()); // ¥³¥¹¥È¤ÎÃÍ¤Î¥Õ¥í¡¼¥Èɽ¼¨¤òÀ¸À® gameManager.uiManager.CreateFlotingMessageToExp(-costExp, FloatingMessage.FloatingMessageType.BulletCost); // »ÈÍѲÄǽ¥Ð¥ì¥Ã¥È¤Î³Îǧ¤È¹¹¿· JugdeOpenBullets(); } /// <summary> /// ElementType¤«¤éSprite¼èÆÀÍÑ /// </summary> /// <param name="elementType"></param> /// <returns></returns> public Sprite GetElementTypeSprite(ElementType elementType) { // elementDataList ÊÑ¿ô¤ÎÍ×ÁǤò£±¤Ä¤º¤Ä½çÈÖ¤¤¤Ë¼è¤ê½Ð¤·¤Æ¡¢elementData ÊÑ¿ô¤ØÂåÆþ foreach (ElementDataSO.ElementData elementData in elementDataSO.elementDataList) { // ¸½ºßÂåÆþ¤µ¤ì¤Æ¤¤¤ë ElementData ¤Î ElementType ¤È°ú¿ô¤Î elementType ¤¬Æ±¤¸¤Ç¤¢¤ë¤Ç¤¢¤ë¤«¾È¹ç if (elementData.elementType == elementType) { // ¾È¹ç¤Î·ë²Ì¡¢¹çÃפ·¤¿ ElementData ¤ËÅÐÏ¿¤µ¤ì¤Æ¤¤¤ë²èÁü¾ðÊó¤òÌ᤹ return elementData.elementSprite; } } // ¤É¤ì¤â¹çÃפ·¤Ê¤¤¾ì¹ç¤Ï null ¤òÌ᤹ return null; } ////* ¤³¤³¤«¤é¥á¥½¥Ã¥É¤ò£±¤ÄÄɲà *//// /// <summary> /// BulletType ¤è¤ê BulletData ¤ò¸¡º÷¤·¤Æ¼èÆÀ /// </summary> /// <param name="bulletType"></param> /// <returns></returns> public BulletDataSO.BulletData GetBulletData(BulletDataSO.BulletType bulletType) { // °ú¿ô¤Î bulletType ¤ÈƱ¤¸ BulletType ¤¬ÅÐÏ¿¤µ¤ì¤Æ¤¤¤ë BulletData ¤òõ¤¹ foreach (BulletDataSO.BulletData bulletData in bulletDataSO.bulletDataList.Where(x => x.bulletType == bulletType)) { // ¹çÃפ·¤¿ BulletData ¤òÌ᤹ return bulletData; } // ¤É¤ì¤â¹çÃפ·¤Ê¤¤¾ì¹ç¤Ï null ¤òÌ᤹ return null; } ////* ¤³¤³¤Þ¤Ç *//// }
using System.Collections; using System.Collections.Generic; using UnityEngine; public class EnemyGenerator : MonoBehaviour { [SerializeField, Header("¥¨¥Í¥ß¡¼¤Î¥×¥ì¥Õ¥¡¥Ö")] private EnemyController enemyObjPrefab; [SerializeField, Header("¥¨¥Í¥ß¡¼À¸À®¤Þ¤Ç¤Î½àÈ÷»þ´Ö")] public float preparateTime; private int generateCount; // À¸À®¤·¤¿¥¨¥Í¥ß¡¼¤Î¿ô¤ò¥«¥¦¥ó¥È¤¹¤ë¤¿¤á¤ÎÊÑ¿ô private float timer; // ½àÈ÷»þ´Ö¤Î·×¬ÍѤÎÊÑ¿ô private GameManager gameManager; [Header("¥¨¥Í¥ß¡¼¤ÎºÇÂçÀ¸À®¿ô")] public int maxGenerateCount; [Header("¥¨¥Í¥ß¡¼¤ÎÀ¸À®´°Î»´ÉÍýÍÑ")] public bool isGenerateEnd; [Header("¥Ü¥¹Æ¤È²´ÉÍýÍÑ")] public bool isBossDestroyed; [Header("¥¨¥Í¥ß¡¼¤Î¥¹¥¯¥ê¥×¥¿¥Ö¥ë¡¦¥ª¥Ö¥¸¥§¥¯¥È")] public EnemyDataSO enemyDataSO; // Normal ¥¿¥¤¥×¤Î¥¨¥Í¥ß¡¼¤Î¥Ç¡¼¥¿¤À¤±ÂåÆþ¤µ¤ì¤Æ¤¤¤ë List private List<EnemyDataSO.EnemyData> normalEnemyDatas = new List<EnemyDataSO.EnemyData>(); // Boss ¥¿¥¤¥×¤Î¥¨¥Í¥ß¡¼¤Î¥Ç¡¼¥¿¤À¤±ÂåÆþ¤µ¤ì¤Æ¤¤¤ë List private List<EnemyDataSO.EnemyData> bossEnemyDatas = new List<EnemyDataSO.EnemyData>(); [Header("¥¨¥Í¥ß¡¼°ÜÆ°ÍѤΥ¹¥¯¥ê¥×¥¿¥Ö¥ë¡¦¥ª¥Ö¥¸¥§¥¯¥È")] public MoveEventSO moveEventSO; [SerializeField, Header("À¸À®¤·¤¿¥¨¥Í¥ß¡¼¤Î¥ê¥¹¥È")] private List<EnemyController> enemiesList = new List<EnemyController>(); /// <summary> /// EnemyGenerator ¤ÎÀßÄê /// </summary> /// <param name="gameManager"></param> public void SetUpEnemyGenerator(GameManager gameManager) { // EnemyGenerator ¥¹¥¯¥ê¥×¥È¤Î gameManager ÊÑ¿ô¤Ë¡¢°ú¿ô¤ÇÆϤ¤¤¿ GameManager ¥¹¥¯¥ê¥×¥È¤Î¾ðÊó¤òÂåÆþ this.gameManager = gameManager; // °ú¿ô¤Ç»ØÄꤷ¤¿¥¨¥Í¥ß¡¼¤Î¥¿¥¤¥×¤Î¥ê¥¹¥È¤òºîÀ® normalEnemyDatas = GetEnemyTypeList(EnemyType.Normal); bossEnemyDatas = GetEnemyTypeList(EnemyType.Boss); // GameData ¤è¤ê¥¨¥Í¥ß¡¼¤ÎºÇÂçÀ¸À®¿ô¤ò¼èÆÀ maxGenerateCount = GameData.instance.GetMaxGenerateCount(); } /// <summary> /// ¥¨¥Í¥ß¡¼À¸À®¤Î½àÈ÷ /// </summary> private void PreparateGenerateEnemy() { // »þ´Ö¤Î·×¬ timer += Time.deltaTime; // ½àÈ÷»þ´Ö¤òĶ¤¨¤¿¤é if (timer >= preparateTime) { // ¼¡²ó¤Î»þ´Ö¤Î·×¬¤ò¹Ô¤¦¤¿¤á¤Ë¥ê¥»¥Ã¥È timer = 0; // ¥¨¥Í¥ß¡¼¤ÎÀ¸À® GenerateEnemy(); // À¸À®¤·¤¿¥¨¥Í¥ß¡¼¤Î¿ô¤ò¥«¥¦¥ó¥È¥¢¥Ã¥× generateCount++; Debug.Log("À¸À®¤·¤¿¥¨¥Í¥ß¡¼¤Î¿ô : " + generateCount); ¡¡¡¡¡¡¡¡¡¡¡¡// º£¤Þ¤Ç¤ËÀ¸À®¤·¤¿¥¨¥Í¥ß¡¼¤Î¿ô¤¬¡¢¥¨¥Í¥ß¡¼¤ÎºÇÂçÀ¸À®¿ô¤ÎÃͤÈƱ¤¸¤«Ä¶¤¨¤¿¤é ¡¡¡¡¡¡¡¡¡¡¡¡if (generateCount >= maxGenerateCount) { ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡// À¸À®´°Î»¤Î¾õÂ֤ˤ¹¤ë = Update ¥á¥½¥Ã¥É¤Ç¤³¤ÎÃͤòÍøÍѤ·¤Æ¡¢À¸À®´°Î»¾õÂ֤ˤʤ俤éÀ¸À®¤Î½àÈ÷½èÍý¤¬¼Â¹Ô¤µ¤ì¤Ê¤¤¤è¤¦¤ËÀ©¸æ¤¹¤ë isGenerateEnd = true; Debug.Log("À¸À®´°Î»"); // ¥Ü¥¹¤ÎÀ¸À® StartCoroutine(GenerateBoss()); } } } /// <summary> /// ¥¨¥Í¥ß¡¼¤ÎÀ¸À® /// </summary> private void GenerateEnemy(EnemyType enemyType = EnemyType.Normal) { ¡¡¡¡¡¡¡¡// ¥é¥ó¥À¥à¤ÊÃͤòÂåÆþ¤¹¤ë¤¿¤á¤ÎÊÑ¿ô¤òÀë¸À ¡¡¡¡¡¡¡¡int randomEnemyNo; ¡¡¡¡¡¡¡¡// EnemyData ¤òÂåÆþ¤¹¤ë¤¿¤á¤ÎÊÑ¿ô¤òÀë¸À EnemyDataSO.EnemyData enemyData = null; // EnemyType ¤Ë¹ç¤ï¤»¤ÆÀ¸À®¤¹¤ë¥¨¥Í¥ß¡¼¤Î¼ïÎà¤ò·èÄꤷ¡¢¤½¤Î¥¨¥Í¥ß¡¼¤Î¼ïÎऴ¤È¤Î¥ê¥¹¥È¤«¤é¥é¥ó¥À¥à¤Ê EnemyData ¤ò¼èÆÀ switch (enemyType) { case EnemyType.Normal: randomEnemyNo = Random.Range(0, normalEnemyDatas.Count); enemyData = normalEnemyDatas[randomEnemyNo]; break; case EnemyType.Boss: randomEnemyNo = Random.Range(0, bossEnemyDatas.Count); enemyData = bossEnemyDatas[randomEnemyNo]; break; } // ¥×¥ì¥Õ¥¡¥Ö¤«¤é¥¨¥Í¥ß¡¼¤Î¥¯¥í¡¼¥ó¤òÀ¸À®¤¹¤ë¡£À¸À®°ÌÃÖ¤Ï EnemyGenerator ¤Î°ÌÃÖ¡£Ìá¤êÃͤÎÃÍ¤Ï EnemyController ·¿¤Ë¤Ê¤ë EnemyController enemyController = Instantiate(enemySetPrefab, transform, false); // <= ¡ù¡¡º¸ÊÕ¤Ë EnemyController ·¿¤ÎÊÑ¿ô¤òÍÑ°Õ¤·¤Æ¡¢¥¤¥ó¥¹¥¿¥ó¥¹¤µ¤ì¤¿¥¨¥Í¥ß¡¼¤Î¾ðÊó¤òÌá¤êÃͤǼõ¤±¼è¤ë // EnemyController ¥¹¥¯¥ê¥×¥È¤Î SetUpEnemy ¥á¥½¥Ã¥É¤ò¼Â¹Ô¤¹¤ë¡¡=>¡¡Start ¥á¥½¥Ã¥É¤ÎÂå¤ï¤ê¤Ë¤Ê¤ë½èÍý enemyController.SetUpEnemy(enemyData); ////* ¤³¤³¤«¤é½èÍý¤ò½¤Àµ *//// // Boss °Ê³°¤Ç¤âÄɲÃÀßÄê¤ò¹Ô¤¦ enemyController.AdditionalSetUpEnemy(this, gameManager.bulletSelectManager.GetBulletData(enemyData.bulletType); // <= ¡ù¡¡Âè2°ú¿ô¤òÄɲä·¤Þ¤¹ ////* ¤³¤³¤Þ¤Ç *//// // List ¤ËÀ¸À®¤·¤¿¥¨¥Í¥ß¡¼¤Î¾ðÊó¤òÄɲà enemiesList.Add(enemyController); } void Update() { // À¸À®´°Î»¤Î¾õÂ֤ˤʤ俤éÀ¸À®½èÍý¤ò¹Ô¤ï¤Ê¤¤¤è¤¦¤Ë¤¹¤ë if (isGenerateEnd) { return; } ¡¡¡¡¡¡¡¡// GameManager ¥¹¥¯¥ê¥×¥È¤Î½àÈ÷¤¬´°Î»¤·¤Æ¤¤¤Ê¤¤¤¦¤Á¤ÏÀ¸À®½èÍý¤ò¹Ô¤ï¤Ê¤¤¤è¤¦¤Ë¤¹¤ë if (!gameManager.isSetUpEnd) { return; } ¡¡¡¡¡¡¡¡// ¥²¡¼¥à½ªÎ»¤Î¾õÂ֤ǤϤʤ¤¤Ê¤é if (!gameManager.isGameUp) { // ¥¨¥Í¥ß¡¼À¸À®¤Î½àÈ÷ PreparateGenerateEnemy(); } } /// <summary> /// ¥Ü¥¹¤ÎÀ¸À® /// </summary> private IEnumerator GenerateBoss() { // ¥Ü¥¹½Ð¸½¤Î·Ù¹ð±é½Ð yield return StartCoroutine(gameManager.uiManager.PlayBossAlert()); // ¥Ü¥¹À¸À® GenerateEnemy(EnemyType.Boss); } /// <summary> /// ¥Ü¥¹Æ¤È²¾õÂÖ¤ÎÀÚ¤êÂؤ¨ /// </summary> /// <param name="isSwitch"></param> public void SwitchBossDestroyed(bool isSwitch) { // ¥Ü¥¹¤ÎƤȲ¾õÂÖ¤òÀÚ¤êÂؤ¨ isBossDestroyed = isSwitch; Debug.Log("¥Ü¥¹Æ¤È²"); // ¥Ü¥¹Æ¤È²¤Ë¹ç¤ï¤»¤Æ¡¢¥²¡¼¥à½ªÎ»¤Î¾õÂÖ¤ËÀÚ¤êÂؤ¨¤ë gameManager.SwitchGameUp(isBossDestroyed); // ¥²¡¼¥à¥¯¥ê¥¢¤Î½àÈ÷ gameManager.PreparateGameClear(); } /// <summary> /// °ú¿ô¤Ç»ØÄꤵ¤ì¤¿¥¨¥Í¥ß¡¼¤Î¼ïÎà¤ÎList¤òºîÀ®¤·¡¢ºîÀ®¤·¤¿ÃͤòÌ᤹ /// </summary> /// <param name="enemyType"></param> /// <returns></returns> private List<EnemyDataSO.EnemyData> GetEnemyTypeList(EnemyType enemyType) { List<EnemyDataSO.EnemyData> enemyDatas = new List<EnemyDataSO.EnemyData>(); // °ú¿ô¤Î¥¿¥¤¥×¤Î¥¨¥Í¥ß¡¼¤Î¥Ç¡¼¥¿¤À¤±¤òÃê½Ð¤·¤Æ enemyDatas ¥ê¥¹¥È¤Ë EnemyData ¤òÄɲ䷤ơ¢List ¤òºîÀ®¤·¤Æ¤¤¤¯ for (int i = 0; i < enemyDataSO.enemyDataList.Count; i++) { if (enemyDataSO.enemyDataList[i].enemyType == enemyType) { enemyDatas.Add(enemyDataSO.enemyDataList[i]); } } // Ãê½Ð½èÍý¤Î·ë²Ì¤òÌ᤹ return enemyDatas; } /// <summary> /// TotalExp ¤Îɽ¼¨¹¹¿·½àÈ÷ /// </summary> /// <param name="exp"></param> public void PreparateDisplayTotalExp(int exp) { // GameManager ¥¹¥¯¥ê¥×¥È¤«¤é UIManager ¥¹¥¯¥ê¥×¥È¤Î UpdateDisplayTotalExp ¥á¥½¥Ã¥É¤ò¼Â¹Ô¤¹¤ë gameManager.uiManager.UpdateDisplayTotalExp(exp); // GameManager ¥¹¥¯¥ê¥×¥È¤«¤é UIManager ¥¹¥¯¥ê¥×¥È¤Î CreateFlotingMessageToExp ¥á¥½¥Ã¥É¤ò¼Â¹Ô¤¹¤ë¡£°ú¿ô¤È¤·¤Æ exp ¤È¥Õ¥í¡¼¥Èɽ¼¨¤Î¼ïÎà¤òÅϤ¹ gameManager.uiManager.CreateFlotingMessageToExp(exp, FloatingMessage.FloatingMessageType.GetExp); // »ÈÍѲÄǽ¥Ð¥ì¥Ã¥ÈÁªÂò¥Ü¥¿¥ó¤Î³Îǧ¤È¹¹¿· gameManager.bulletSelectManager.JugdeOpenBullets(); } /// <summary> /// ¥×¥ì¥¤¥ä¡¼¤È¥¨¥Í¥ß¡¼¤È¤Î°ÌÃÖ¤«¤éÊý¸þ¤òȽÄꤹ¤ë½àÈ÷ /// </summary> /// <returns></returns> public Vector3 PreparateGetPlayerDirection(Vector3 enemyPos) { return gameManager.GetPlayerDirection(enemyPos); } /// <summary> /// enemiesList ¤ËÅÐÏ¿¤µ¤ì¤Æ¤¤¤ë¥¨¥Í¥ß¡¼¤Î¤¦¤Á¡¢¥ê¥¹¥È¤Ë»Ä¤Ã¤Æ¤¤¤ë¥¨¥Í¥ß¡¼¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òÇ˲õ¤·¡¢enemiesList ¤ò¥¯¥ê¥¢¤¹¤ë /// </summary> public void ClearEnemiesList() { // enemiesList ¤ÎÍ×ÁÇ(Ãæ¿È)¤ò£±¤Ä¤º¤Ä½çÈ֤ˡ¢Í×ÁǤκÇÂçÃͤˤʤë¤Þ¤ÇȽÄꤷ¤Æ¤¤¤¯ for (int i = 0; i < enemiesList.Count; i++) { ¡¡¡¡¡¡¡¡¡¡¡¡// Í×ÁǤ¬¶õ¤Ç¤Ï¤Ê¤¤(¥×¥ì¥¤¥ä¡¼¤ËÇ˲õ¤µ¤ì¤º¤Ë¥²¡¼¥à²èÌ̤˻ĤäƤ¤¤ë)¤Ê¤é if (enemiesList[i] != null) { ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡// ¤½¤Î¥¨¥Í¥ß¡¼¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òÇ˲õ¤¹¤ë Destroy(enemiesList[i].gameObject); } } ¡¡¡¡¡¡¡¡// ¥ê¥¹¥È¤ò¥¯¥ê¥¢(Í×ÁǤ¬²¿¤â¤Ê¤¤¾õÂÖ)¤Ë¤¹¤ë enemiesList.Clear(); } /// <summary> /// °ì»þ¥ª¥Ö¥¸¥§¥¯¥È(¥Ð¥ì¥Ã¥È¡¢¥¨¥Õ¥§¥¯¥È¤Ê¤É)¤ò¤¹¤Ù¤ÆÇË´þ(ÍøÍѾõ¶·¤Ë±þ¤¸¤Æ¡¢¡¤«¢¤Î¤¤¤º¤ì¤«¤Î½èÍý¤ò¼ÂÁõ¤¹¤ë) /// </summary> public void DestroyTemporaryObjectContainer() { // ¡ TemporaryObjectContainer ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òÇ˲õ¤¹¤ë(¥×¥í¥Ñ¥Æ¥£¤òÍøÍѤ·¤Æ¤¤¤ë¾ì¹ç) Destroy(TransformHelper.TemporaryObjectContainerTran.gameObject); // ¢ TemporaryObjectContainer ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òÇ˲õ¤¹¤ë(¥×¥í¥Ñ¥Æ¥£¤òÍøÍѤ·¤Æ¤¤¤Ê¤¤¾ì¹ç) Destroy(TransformHelper.GetTemporaryObjectContainerTran().gameObject); } }