From 4fe7a27d965c1433c940d5b3eaa13930fa999621 Mon Sep 17 00:00:00 2001 From: River Jiang <546213258@qq.com> Date: Wed, 28 Oct 2020 10:00:08 +0800 Subject: [PATCH] 提交充能技能条动画 --- Assets/Scripts/TowerDefense/Towers/Placement/TowerPlacementGrid.cs | 119 ++++++++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 88 insertions(+), 31 deletions(-) diff --git a/Assets/Scripts/TowerDefense/Towers/Placement/TowerPlacementGrid.cs b/Assets/Scripts/TowerDefense/Towers/Placement/TowerPlacementGrid.cs index a9a7c87..e2b55dd 100644 --- a/Assets/Scripts/TowerDefense/Towers/Placement/TowerPlacementGrid.cs +++ b/Assets/Scripts/TowerDefense/Towers/Placement/TowerPlacementGrid.cs @@ -8,6 +8,7 @@ using TMPro.Examples; using TowerDefense.Level; using TowerDefense.UI.HUD; +using UnityEditor; using UnityEngine; using UnityEngine.Analytics; using UnityEngine.UI; @@ -54,7 +55,12 @@ /// </summary> public Button waitBuyBtnPrefab; - // TEST CODE: + /// <summary> + /// 充能特效对应的Prefab. + /// </summary> + public ParticleSystem energyEffectPrefab; + + // TEST CODE TO DELETE: public ParticleSystem TestParticle; protected ParticleSystem PlayParticle; protected Timer effectStopTimer; @@ -121,6 +127,7 @@ Vector2[] m_arrTowerBulletUIPos; BulletUICtl[] arrTowerBulletUi; EnergyUICtl[] arrTowerEnergyUi; + ParticleSystem[] arrTowerEnergyEffect; /// <summary> @@ -316,37 +323,58 @@ } } + protected void partilceUpdate() + { + if (bTimerStart) + { + if (effectStopTimer.Tick(Time.deltaTime)) + { + bTimerStart = false; + effectStopTimer.Reset(); + } + } + + if (UnityEngine.Input.GetKeyDown(KeyCode.Q)) + { + this.PlayEnergyEffect(2, true); + return; + } + if (UnityEngine.Input.GetKeyDown(KeyCode.W)) + { + this.PlayEnergyEffect(2, false); + return; + } + + // TEST CODE TO DELETE: + if (PlayParticle != null) + { + + if (UnityEngine.Input.GetKeyDown(KeyCode.E)) + { + PlayParticle = Instantiate(TestParticle); + Vector3 tpos = this.transform.position; + tpos.y += 5.0f; + PlayParticle.transform.position = tpos; + + //Vector3 lookVec = Vector3.zero; + //lookVec.x = 1; + //PlayParticle.transform.LookAt(lookVec); + PlayParticle.Play(); + //effectStopTimer.SetTime(0.15f); + //bTimerStart = true; + } + if (UnityEngine.Input.GetKeyDown(KeyCode.F)) + { + PlayParticle.Stop(true, ParticleSystemStopBehavior.StopEmittingAndClear); + } + } + } + void Update() { - /* if (bTimerStart) - { - if (effectStopTimer.Tick(Time.deltaTime)) - { - bTimerStart = false; - effectStopTimer.Reset(); - } - } - - // TEST CODE TO DELETE: - if ( PlayParticle != null) - { - - if (UnityEngine.Input.GetKeyDown(KeyCode.E)) - { - PlayParticle = Instantiate(TestParticle); - PlayParticle.transform.position = this.transform.position; - Vector3 lookVec = Vector3.zero; - lookVec.x = 1; - PlayParticle.transform.LookAt(lookVec); - PlayParticle.Play(); - effectStopTimer.SetTime( 0.15f ); - bTimerStart = true; - } - if (UnityEngine.Input.GetKeyDown(KeyCode.F)) - { - PlayParticle.Stop(true, ParticleSystemStopBehavior.StopEmittingAndClear); - } - }*/ + // + // TEST CODE TO DELETE: + partilceUpdate(); if (m_arrCoinGenTime == null) return; @@ -731,6 +759,7 @@ m_arrTowerBulletUIPos = new Vector2[dimensions.x]; arrTowerBulletUi = new BulletUICtl[dimensions.x]; arrTowerEnergyUi = new EnergyUICtl[dimensions.x]; + arrTowerEnergyEffect = new ParticleSystem[dimensions.x]; for (int x = 0; x < dimensions.x; x++) { @@ -768,12 +797,40 @@ img.transform.SetAsFirstSibling(); EnergyUICtl euc = img.GetComponent<EnergyUICtl>(); arrTowerEnergyUi[x] = euc; - // euc.gameObject.SetActive(false); + euc.gameObject.SetActive(false); + + // 设置播放特效对应的3D坐标: + Vector3 vpos = GridToWorld(new IntVector2(x, dy), new IntVector2(2, 1)); + vpos.x -= (gridSize / 2.0f); + vpos.y += 5.0f; + + arrTowerEnergyEffect[x] = Instantiate( energyEffectPrefab ); + arrTowerEnergyEffect[x].transform.position = vpos; + arrTowerEnergyEffect[x].Stop(); } return; } + /// <summary> + /// 在指定的位置播放充能成功的特效. + /// </summary> + /// <param name="x"></param> + /// <param name="play">是播放还是停止播放</param> + public void PlayEnergyEffect( int x,bool play = true ) + { + if (!arrTowerEnergyEffect[x]) return; + if( play) + { + arrTowerEnergyEffect[x].Play(); + } + else + { + arrTowerEnergyEffect[x].Stop(); + } + return; + } + public void updateGridOpenCoin(int ix, int iy) { -- Gitblit v1.9.1