| | |
| | | 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) |
| | |
| | | /// </summary> |
| | | protected virtual void Update() |
| | | { |
| | | // Agent 和 Tower 身上都有 AttackAffector,如果获取不到 ILauncher 说明是 Agent |
| | | // 目前为止,Agent 并不需要发射子弹攻击 |
| | | if (m_Launcher == null) return; |
| | | |
| | | // 处理当前Affector所在Tower对应的技能 |
| | |
| | | { |
| | | OnFireTimer(); |
| | | m_FireTimer = 1 / fireRate; |
| | | |
| | | // 多倍攻速: |
| | | if (fInEnergy > 0.0f) |
| | | m_FireTimer = m_FireTimer / 3.0f; |
| | |
| | | // |
| | | if (bnum == 0) |
| | | { |
| | | damagerProjectile.damageMulti = 2.0f; |
| | | damagerProjectile.damageMulti = 5.0f; |
| | | fillBulletTime = 2.0f; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | if (this.towerPtr) |
| | | towerPtr.setTowerState(true); |
| | | } |
| | | |
| | | if (isMultiAttack) |
| | |
| | | else |
| | | { |
| | | if (Targetter.bSearchTarget) |
| | | { |
| | | m_Launcher.Launch(m_TrackingEnemy, damagerProjectile.gameObject, projectilePoints); |
| | | AudioSourceManager.Ins.Play(audioEnum); |
| | | } |
| | | } |
| | | if (randomAudioSource != null) |
| | | { |