wangguan
2020-11-05 ac7a95d834b4ef2f5904f54bd4173002b6ff52b7
Assets/Scripts/TowerDefense/Affectors/AttackAffector.cs
@@ -176,18 +176,34 @@
            towerTargetter.ResetTargetter();
            towerTargetter.alignment = affectorAlignment;
            towerTargetter.acquiredTarget += OnAcquiredTarget;
            towerTargetter.lostTarget += OnLostTarget;
            // towerTargetter.lostTarget += OnLostTarget;
            GetAudioEnum();
        }
        private AudioEnum audioEnum;//当前音乐的种类
        void GetAudioEnum()
        {
            if (transform.parent.name.StartsWith("GrowUpTower"))
            {
                //火元素
                audioEnum = AudioEnum.FireTAttack;
            }
            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.lostTarget -= OnLostTarget;
        }
        void OnLostTarget()
        {
            m_TrackingEnemy = null;
            // towerTargetter.lostTarget -= OnLostTarget;
        }
        void OnAcquiredTarget(Targetable acquiredTarget)
@@ -299,8 +315,6 @@
        /// </summary>
        protected virtual void Update()
        {
            // Agent 和 Tower 身上都有 AttackAffector,如果获取不到 ILauncher 说明是 Agent
            // 目前为止,Agent 并不需要发射子弹攻击
            if (m_Launcher == null) return;
            // 处理当前Affector所在Tower对应的技能
@@ -313,7 +327,6 @@
            {
                OnFireTimer();
                m_FireTimer = 1 / fireRate;
                // 多倍攻速:
                if (fInEnergy > 0.0f)
                    m_FireTimer = m_FireTimer / 3.0f;
@@ -364,9 +377,14 @@
                // 
                if (bnum == 0)
                {
                    damagerProjectile.damageMulti = 2.0f;
                    damagerProjectile.damageMulti = 5.0f;
                    fillBulletTime = 2.0f;
                }
            }
            else
            {
                if (this.towerPtr)
                    towerPtr.setTowerState(true);
            }
            if (isMultiAttack)
@@ -378,7 +396,10 @@
            else
            {
                if (Targetter.bSearchTarget)
                {
                    m_Launcher.Launch(m_TrackingEnemy, damagerProjectile.gameObject, projectilePoints);
                    AudioSourceManager.Ins.Play(audioEnum);
                }
            }
            if (randomAudioSource != null)
            {