wangguan
2020-12-15 a5666fce59f464fb9e0813adb4fc85260dd24bc3
Assets/Scripts/TowerDefense/UI/EndlessBossSkill/BossSkillBubbleBomb.cs
@@ -2,6 +2,7 @@
using UnityEngine;
using TowerDefense.Agents;
using TowerDefense.Level;
using TMPro;
/**
 * 泡泡炸弹
@@ -101,8 +102,6 @@
        /// </summary>
        protected List<GameObject> bubbleBombPool;
        protected int capacity = 10;
        private int getCount;
        private int recycleCount;
@@ -171,6 +170,10 @@
                config.DestroyTime = bubbleBomb.GetExplodeTime();
                config.MoveSpeed = SkillData.effect[1];
                bubbleBombList.Add(config);
                bubbleBomb.Blood.SetPos();
                bubbleBomb.Blood.SetRemainHitCount(config.NeedAttackCount);
                bubbleBomb.Blood.ShowBlood();
            }
        }
@@ -209,18 +212,9 @@
        public override void Init()
        {
            base.Init();
            Debug.Log("--------------------- 泡泡炸弹技能初始化 ---------------------");
            Debug.Log("---- 泡泡炸弹技能初始化 ----");
            bubbleBombList = new List<BubbleBombConfig>();
            bubbleBombPool = new List<GameObject>();
            GameObject prefab = Resources.Load<GameObject>(prefabPath);
            for (int i = 0; i < capacity; ++i)
            {
                GameObject obj = GameObject.Instantiate(prefab);
                obj.SetActive(false);
                bubbleBombPool.Add(obj);
            }
        }
        /// <summary>
@@ -239,6 +233,15 @@
            {
                GameObject prefab = Resources.Load<GameObject>(prefabPath);
                ret = GameObject.Instantiate(prefab);
                BubbleBombAgent agent = ret.GetComponent<BubbleBombAgent>();
                prefab = Resources.Load<GameObject>($"Prefabs/BubbleBombBlood");
                GameObject bubbleBombBlood = GameObject.Instantiate(prefab);
                GameObject bloodUI = GameObject.Find("MainUI/BloodUI");
                bubbleBombBlood.transform.SetParent(bloodUI.transform, false);
                agent.Blood = bubbleBombBlood.GetComponent<BubbleBombBlood>();
                agent.Blood.Target = agent;
            }
            ret.SetActive(true);
@@ -254,6 +257,8 @@
        {
            if (obj != null)
            {
                BubbleBombAgent agent = obj.GetComponent<BubbleBombAgent>();
                agent.Blood.HideBlood();
                obj.SetActive(false);
                bubbleBombPool.Add(obj);
            }
@@ -268,6 +273,8 @@
            {
                GameObject obj = bubbleBombPool[0];
                bubbleBombPool.Remove(obj);
                BubbleBombAgent agent = obj.GetComponent<BubbleBombAgent>();
                GameObject.Destroy(agent.Blood.gameObject);
                GameObject.Destroy(obj);
            }
        }
@@ -298,10 +305,10 @@
                {
                    BubbleBombConfig config = bubbleBombList[i];
                    // 攻击次数够了被打死了 或者 达到基地了
                    if (config.Agent.bInDeathState) return;
                    if (config.IsAttackDeath || config.IsArrived) return;
                    ++config.AttackCount;
                    Debug.Log($"--------------------- BubbleBombAgent Id: {id}, AttackCount:{config.AttackCount} ---------------------");
                    config.Agent.Blood.SetRemainHitCount(config.NeedAttackCount - config.AttackCount);
                    if (config.AttackCount >= config.NeedAttackCount)
                        AgentDead(config);
@@ -323,8 +330,9 @@
                {
                    BubbleBombConfig config = bubbleBombList[i];
                    if (config.Agent.bInDeathState) return;
                    if (config.IsAttackDeath || config.IsArrived) return;
                    config.Agent.Blood.HideBlood();
                    AgentDead(config);
                    break;
                }
@@ -344,7 +352,7 @@
                {
                    BubbleBombConfig config = bubbleBombList[i];
                    if (config.Agent.bInDeathState) return;
                    if (config.IsAttackDeath || config.IsArrived) return;
                    config.IsDizzinessed = true;
                    config.Agent.CanMove = false;
@@ -361,11 +369,11 @@
        /// <param name="config"></param>
        private void AgentDead(BubbleBombConfig config)
        {
            config.Agent.Blood.HideBlood();
            config.IsAttackDeath = true;
            AgentInsManager.instance.removeAgent(config.Agent);
            config.Agent.StopNormalEffect();
            config.Agent.PlayExplodeEffect();
            AgentInsManager.instance.removeAgent(config.Agent);
            config.Agent.bInDeathState = true;
            config.IsAttackDeath = true;
        }
        /// <summary>
@@ -374,11 +382,11 @@
        /// <param name="config"></param>
        private void AgentArrived(BubbleBombConfig config)
        {
            config.Agent.Blood.HideBlood();
            config.IsArrived = true;
            AgentInsManager.instance.removeAgent(config.Agent);
            config.Agent.StopNormalEffect();
            config.Agent.PlayExplodeEffect();
            AgentInsManager.instance.removeAgent(config.Agent);
            config.Agent.bInDeathState = true;
        }
        public override void Update(float deltaTime)
@@ -389,6 +397,8 @@
            {
                BubbleBombConfig config = bubbleBombList[i];
                if (config.Agent == null || config.obj == null) continue;
                // 泡泡炸弹已经触发了攻击,延时一会过后掉爱心
                if (config.IsAttack)
                {
@@ -396,7 +406,7 @@
                    if (config.AttackTime <= 0)
                    {
                        EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.EndlessLoseHeart, 3);
                        EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.EndlessLoseHeart, 2);
                        config.IsAttack = false;
                    }
                }
@@ -433,7 +443,7 @@
                }
                // 更新移动
                if (config.Agent != null && !config.Agent.bInDeathState && config.Agent.CanMove)
                if (config.Agent != null && config.Agent.CanMove)
                {
                    Vector3 pos = config.obj.transform.position;
                    pos.z -= deltaTime * config.MoveSpeed;