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