wangguan
2020-12-29 452c75675679c44cc39b04bdb7d330d7c5c14d5c
Assets/Scripts/TowerDefense/Affectors/AttackAffector.cs
@@ -232,35 +232,41 @@
            towerTargetter.alignment = affectorAlignment;
            towerTargetter.acquiredTarget += OnAcquiredTarget;
            // towerTargetter.lostTarget += OnLostTarget;
            GetAudioEnum();
            myTower = transform.parent.GetComponent<TowerLevel>();
            GetAudioEnum();
        }
        private AudioEnum audioEnum;//当前音乐的种类
        bool isWoodAudio;
        void GetAudioEnum()
        {
            if (transform.parent.name.StartsWith("GrowUpTower"))
            //小怪身上也有这个脚本,塔的名字做了更改,所以判断条件需要变成transform.parent.parent
            if (transform.parent.parent != null)
            {
                //火元素
                audioEnum = AudioEnum.FireTAttack;
                if (transform.parent.parent.name.StartsWith("GrowUpTower"))
                {
                    //火元素
                    audioEnum = AudioEnum.FireTAttack;
                }
                else if (transform.parent.parent.name.StartsWith("BlinkTower"))
                {
                    //木元素
                    audioEnum = AudioEnum.WoodTAttack;
                }
                else if (transform.parent.parent.name.StartsWith("CopyCatTower"))
                {
                    //水元素
                    audioEnum = AudioEnum.WaterTAttack;
                }
            }
            else if (transform.parent.name.StartsWith("BlinkTower"))
            {
                //木元素
                audioEnum = AudioEnum.WoodTAttack;
            }
            else if (transform.parent.name.StartsWith("CopyCatTower"))
            {
                //水元素
                audioEnum = AudioEnum.WaterTAttack;
            }
        }
        void OnDestroy()
        {
            towerTargetter.acquiredTarget -= OnAcquiredTarget;
            // towerTargetter.acquiredTarget -= OnAcquiredTarget;
            // towerTargetter.lostTarget -= OnLostTarget;
        }
@@ -296,9 +302,12 @@
        bool fireState = false;
        protected void updateTowerSkillData()
        {
            HandleBullet();
            HandleEnergy();
            HandleFreezeBreath();
            if (towerLevel != null && towerLevel.ParentTower != null && towerLevel.ParentTower.ElfId == 301)
                HandleBullet();
            if (towerLevel != null && towerLevel.ParentTower != null && towerLevel.ParentTower.ElfId == 101)
                HandleEnergy();
            if (towerLevel != null && towerLevel.ParentTower != null && towerLevel.ParentTower.ElfId == 201)
                HandleFreezeBreath();
        }
        // 处理木精灵装填子弹
@@ -451,22 +460,6 @@
            if (towerPtr && towerPtr.FreezeBreathCtrl)
            {
                Damager damager = projectile.gameObject.GetComponent<Damager>();
                float finalDamage = damager.damage;
                List<EndlessBuffConfig> list = EndlessBuffManager.instance.GetBuffListByEffectType(EndlessBuffEffectType.AttackAdd, towerPtr.ElfId);
                float ratio = 0;
                float add = 0;
                if (list.Count > 0)
                {
                    for (int i = 0; i < list.Count; ++i)
                    {
                        ratio += list[i].Config.buff_effect[1];
                        add += list[i].Config.buff_effect[2];
                    }
                }
                finalDamage += (ratio / 100f) * finalDamage + add;
                if (inFreezeBreath <= 0)
                {
@@ -483,7 +476,7 @@
                        towerPtr.PlayFreezeBreathEffect(true);
                        towerPtr.FreezeBreathCtrl.ReleaseCount = 1;
                        towerPtr.FreezeBreathCtrl.PlayFreezeEffect(waveLineID);
                        towerPtr.FreezeBreathCtrl.ReleaseFreeze(waveLineID, finalDamage, damager.alignmentProvider);
                        towerPtr.FreezeBreathCtrl.ReleaseFreeze(waveLineID, towerPtr, damager.alignmentProvider);
                    }
                }
                else
@@ -496,7 +489,7 @@
                    if (interval == time * (towerPtr.FreezeBreathCtrl.DamageCount - towerPtr.FreezeBreathCtrl.ReleaseCount - 1) + offset && towerPtr.FreezeBreathCtrl.ReleaseCount < towerPtr.FreezeBreathCtrl.DamageCount)
                    {
                        ++towerPtr.FreezeBreathCtrl.ReleaseCount;
                        towerPtr.FreezeBreathCtrl.ReleaseFreeze(waveLineID, finalDamage, damager.alignmentProvider);
                        towerPtr.FreezeBreathCtrl.ReleaseFreeze(waveLineID, towerPtr, damager.alignmentProvider);
                    }
                    if (inFreezeBreath <= 0)
@@ -589,7 +582,7 @@
        public virtual void FireProjectile()
        {
            m_TrackingEnemy = targetter.GetTarget(waveLineID, bWoodAffector);
            GameObject go = damagerProjectile.gameObject;
            GameObject go = projectile;
            if (m_TrackingEnemy == null || fillBulletTime > 0) return;
@@ -613,11 +606,13 @@
                    //这里需要替换特效
                    var poolable = Core.Utilities.Poolable.TryGetPoolable<Core.Utilities.Poolable>(woodProjectile_SP);
                    go = poolable.gameObject;
                    //go = Instantiate(woodProjectile_SP);
                    Damager tmpDamager = go.GetComponent<Damager>();
                    tmpDamager.damageMulti = 10.0f;
                    tmpDamager.damage = damagerProjectile.damage;
                    tmpDamager.IsEnhancedBullet = true;
                    tmpDamager.TowerPtr = towerPtr;
                    isWoodAudio = true;
                }
                // 下一颗子弹是强化子弹,然后直接蓄力
@@ -639,7 +634,17 @@
            {
                m_Launcher.Launch(m_TrackingEnemy, go, projectilePoints);
                if (AudioSourceManager.Ins)
                    AudioSourceManager.Ins.Play(audioEnum);
                {
                    if (isWoodAudio)
                    {
                        isWoodAudio = false;
                        AudioSourceManager.Ins.Play(AudioEnum.WoodSkill);
                    }
                    else
                    {
                        AudioSourceManager.Ins.Play(audioEnum);
                    }
                }
            }
        }