From b2722bf84115092dcf61a0f612b737c20eb11f27 Mon Sep 17 00:00:00 2001 From: chenxin <chenxin6991@163.com> Date: Wed, 25 Nov 2020 21:10:20 +0800 Subject: [PATCH] 木精灵蓄力攻击特效 --- Assets/Scripts/TowerDefense/Level/EndlessWaveLineManager.cs | 67 +++++++++++++++++++++++---------- 1 files changed, 47 insertions(+), 20 deletions(-) diff --git a/Assets/Scripts/TowerDefense/Level/EndlessWaveLineManager.cs b/Assets/Scripts/TowerDefense/Level/EndlessWaveLineManager.cs index 1d416dd..8e88ba9 100644 --- a/Assets/Scripts/TowerDefense/Level/EndlessWaveLineManager.cs +++ b/Assets/Scripts/TowerDefense/Level/EndlessWaveLineManager.cs @@ -19,17 +19,17 @@ /// <summary> /// 火攻击效果 /// </summary> - public ParticleSystem skillFirePrefab; + public GameObject skillFirePrefab; /// <summary> /// 炸弹攻击效果 /// </summary> - public ParticleSystem skillBombPrefab; + public GameObject skillBombPrefab; /// <summary> /// 停止移动的Buff特效. /// </summary> - public ParticleSystem bufStopMovePrefab; + public GameObject bufStopMovePrefab; protected bool zeroState = true; @@ -53,10 +53,36 @@ { if (id >= waveLineList.Count || waveLineList[id] == null) return; - ParticleSystem playParticle = Instantiate(skillFirePrefab); - playParticle.transform.position = EndlessLevelManager.instance.WaveManager.GetWaveEndPos(id); - playParticle.Play(); - Destroy(playParticle.gameObject, playParticle.main.duration); + GameObject obj = Instantiate(skillFirePrefab); + ParticleSystem ps = obj.GetComponent<ParticleSystem>(); + + if (ps == null) + ps = obj.transform.GetChild(0).GetComponent<ParticleSystem>(); + ps.transform.position = EndlessLevelManager.instance.WaveManager.GetWaveEndPos(id); + ps.Play(); + AudioSourceManager.Ins.Play(AudioEnum.FireSkill); + + Destroy(obj, 5f); + } + + /// <summary> + /// 在所有兵线上播放特效 + /// </summary> + public void PlayAllWaveLineEffect() + { + for (int i = 0; i < waveLineList.Count; i++) + { + GameObject obj = Instantiate(skillFirePrefab); + ParticleSystem ps = obj.GetComponent<ParticleSystem>(); + + if (ps == null) + ps = obj.transform.GetChild(0).GetComponent<ParticleSystem>(); + ps.transform.position = EndlessLevelManager.instance.WaveManager.GetWaveEndPos(i); + ps.Play(); + AudioSourceManager.Ins.Play(AudioEnum.FireSkill); + + Destroy(obj, 5f); + } } /// <summary> @@ -66,10 +92,17 @@ public void PlayBattleAreaBombEffect(Vector3 pos) { if (skillBombPrefab == null) return; - ParticleSystem playParticle = Instantiate(skillBombPrefab); - playParticle.transform.position = pos; - playParticle.Play(); - Destroy(playParticle.gameObject, playParticle.main.duration); + + GameObject obj = Instantiate(skillBombPrefab); + ParticleSystem ps = obj.GetComponent<ParticleSystem>(); + + if (ps == null) + ps = obj.transform.GetChild(0).GetComponent<ParticleSystem>(); + ps.transform.position = pos; + ps.Play(); + AudioSourceManager.Ins.Play(AudioEnum.LightningSkill); + + Destroy(obj, 5f); } /// <summary> @@ -111,17 +144,11 @@ /// 某一个位置攻击塔位放下。 /// </summary> /// <param name="pos"></param> - public void AttackTowerFixed(int pos) + public void AttackTowerFixed(int pos, bool playEffect = true) { - if (pos >= waveLineList.Count || waveLineList[pos] == null) return; + if (pos >= waveLineList.Count || waveLineList[pos] == null || !playEffect) return; - int subone = pos - 1; - int addone = pos + 1; - - if (subone >= 0) - WaveLineFlash(subone); + // 无尽模式改为只有一条兵线 WaveLineFlash(pos); - if (addone < waveLineList.Count) - WaveLineFlash(addone); } } \ No newline at end of file -- Gitblit v1.9.1