| | |
| | | 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; |
| | | } |
| | | |
| | |
| | | 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(); |
| | | } |
| | | |
| | | // 处理木精灵装填子弹 |
| | |
| | | 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) |
| | | { |
| | |
| | | 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 |
| | |
| | | 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) |
| | |
| | | public virtual void FireProjectile() |
| | | { |
| | | m_TrackingEnemy = targetter.GetTarget(waveLineID, bWoodAffector); |
| | | GameObject go = damagerProjectile.gameObject; |
| | | GameObject go = projectile; |
| | | |
| | | if (m_TrackingEnemy == null || fillBulletTime > 0) return; |
| | | |
| | |
| | | //这里需要替换特效 |
| | | 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; |
| | | } |
| | | |
| | | // 下一颗子弹是强化子弹,然后直接蓄力 |
| | |
| | | { |
| | | 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); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |