| | |
| | | /// </summary> |
| | | protected Targetable m_TrackingEnemy; |
| | | |
| | | |
| | | /// <summary> |
| | | /// 处理装弹时间. |
| | | /// </summary> |
| | | protected float fillBulletTime = 0.0f; |
| | | |
| | | /// <summary> |
| | | /// 充能时间 |
| | | /// </summary> |
| | | protected float energyCalTime = 0; |
| | | protected float fInEnergy = 0; |
| | | protected float fBackupTimer = 0.0f; |
| | | |
| | | /// <summary> |
| | | /// Gets the search rate from the targetter |
| | |
| | | m_Launcher = GetComponent<ILauncher>(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// Update the timers |
| | | /// </summary> |
| | | protected virtual void Update() |
| | | |
| | | protected void updateTowerSkillData() |
| | | { |
| | | // |
| | | // 预留出来装填子弹的时间. |
| | |
| | | } |
| | | } |
| | | |
| | | // |
| | | // 充能时间的处理 |
| | | if( towerPtr && towerPtr.energyCtl) |
| | | { |
| | | if( this.fInEnergy <= 0) |
| | | { |
| | | this.energyCalTime += Time.deltaTime; |
| | | float process = energyCalTime % 11.0f; |
| | | int proint = (int)Math.Floor(process); |
| | | towerPtr.energyCtl.SetEnergyProgress(proint); |
| | | if (proint == 10) |
| | | { |
| | | fInEnergy = 5.0f; |
| | | |
| | | // 设置多倍攻击速度 |
| | | fBackupTimer = m_FireTimer; |
| | | m_FireTimer = m_FireTimer / 3.0f; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | fInEnergy -= Time.deltaTime; |
| | | if( fInEnergy <= 0) |
| | | { |
| | | fInEnergy = 0.0f; |
| | | this.energyCalTime = 0.0f; |
| | | towerPtr.energyCtl.SetEnergyProgress(0); |
| | | |
| | | // 恢复正常攻击速度 |
| | | m_FireTimer = fBackupTimer; |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// Update the timers |
| | | /// </summary> |
| | | protected virtual void Update() |
| | | { |
| | | // 处理当前Affector所在Tower对应的技能 |
| | | updateTowerSkillData(); |
| | | |
| | | m_FireTimer -= Time.deltaTime; |
| | | if( trackingEnemy == null ) |
| | | m_TrackingEnemy = targetter.GetTarget(waveLineID, bWoodAffector); |
| | |
| | | { |
| | | OnFireTimer(); |
| | | m_FireTimer = 1 / fireRate; |
| | | |
| | | // 多倍攻速: |
| | | if (fInEnergy > 0.0f) |
| | | m_FireTimer = m_FireTimer / 3.0f; |
| | | } |
| | | } |
| | | |
| | |
| | | /// </summary> |
| | | protected virtual void FireProjectile() |
| | | { |
| | | // WORK START: 确保获取 |
| | | // 不再处理多子弹攻击,确保只有一个弹道 |
| | | isMultiAttack = false; |
| | | m_TrackingEnemy = targetter.GetTarget( waveLineID, bWoodAffector ); |