From 56f231f1f6523d7920cf32f033f9bb6f0015550f Mon Sep 17 00:00:00 2001
From: chenxin <chenxin6991@163.com>
Date: Wed, 28 Oct 2020 18:05:11 +0800
Subject: [PATCH] Merge commit '8380b3c000a04bd9bf6dfc11fd8337c1563ad265' into master

---
 Assets/Scripts/TowerDefense/Agents/Agent.cs |   95 ++++++++++++++++++++++++-----------------------
 1 files changed, 48 insertions(+), 47 deletions(-)

diff --git a/Assets/Scripts/TowerDefense/Agents/Agent.cs b/Assets/Scripts/TowerDefense/Agents/Agent.cs
index d7e7342..88afea5 100644
--- a/Assets/Scripts/TowerDefense/Agents/Agent.cs
+++ b/Assets/Scripts/TowerDefense/Agents/Agent.cs
@@ -402,39 +402,12 @@
         {
             MoveStopTime = binfo.last / 1000;
 
-            if (WaveLineSelMgr.instanceExists)
+            if (!isFrost)
             {
-                // 播放特效:
-                if (WaveLineSelMgr.instance.bufStopMovePrefab == null) return;
+                isFrost = true;
 
-                // 正在播放的话,直接返回.
-                if (MoveStopEffect)
-                    return;
-
-                GameObject obj = Instantiate(WaveLineSelMgr.instance.bufStopMovePrefab);
-                MoveStopEffect = obj.GetComponent<ParticleSystem>();
-
-                if (MoveStopEffect == null)
-                    MoveStopEffect = obj.transform.GetChild(0).GetComponent<ParticleSystem>();
-                MoveStopEffect.transform.position = this.position;
-                MoveStopEffect.Play();
-            }
-            else if (EndlessWaveLineManager.instanceExists)
-            {
-                // 播放特效:
-                if (EndlessWaveLineManager.instance.bufStopMovePrefab == null) return;
-
-                // 正在播放的话,直接返回.
-                if (MoveStopEffect)
-                    return;
-
-                GameObject obj = Instantiate(EndlessWaveLineManager.instance.bufStopMovePrefab);
-                MoveStopEffect = obj.GetComponent<ParticleSystem>();
-
-                if (MoveStopEffect == null)
-                    MoveStopEffect = obj.transform.GetChild(0).GetComponent<ParticleSystem>();
-                MoveStopEffect.transform.position = this.position;
-                MoveStopEffect.Play();
+                if (FrostParticle != null)
+                    FrostParticle.Play();
             }
         }
 
@@ -492,26 +465,30 @@
             timeToPoisonHurt = 0;
             bShieldBreak = false;
             bInDeathAct = false;
+
+            StopFrostParticle();
             //this.SetTargetableMatColor(Color.white);
 
             // 删除当前停止特效和状态.
             if (MoveStopTime > 0)
-            {
-                if (MoveStopEffect)
-                {
-                    MoveStopEffect.Stop();
-                    Destroy(MoveStopEffect);
-                    MoveStopEffect = null;
-                }
-
                 MoveStopTime = 0.0f;
-            }
 
 
             // 停止DoTween动画.
             this.transform.DOKill();
 
             Poolable.TryPool(gameObject);
+        }
+
+        private void StopFrostParticle()
+        {
+            if (isFrost)
+            {
+                isFrost = false;
+
+                if (FrostParticle != null)
+                    FrostParticle.Stop();
+            }
         }
 
         /// <summary>	
@@ -734,12 +711,7 @@
                 MoveStopTime -= Time.deltaTime;
                 if (MoveStopTime <= 0)
                 {
-                    if (MoveStopEffect)
-                    {
-                        MoveStopEffect.Stop();
-                        Destroy(MoveStopEffect);
-                        MoveStopEffect = null;
-                    }
+                    StopFrostParticle();
                     MoveStopTime = 0;
                 }
                 else
@@ -753,6 +725,24 @@
             }
 
             float finalSpeed = fMoveSpeed * (1 - speedSlowRate);
+
+            if (speedSlowRate > 0 && !isSlowDown)
+            {
+                isSlowDown = true;
+
+                if (SlowDownParticle != null)
+                    SlowDownParticle.Play();
+            }
+            else if (speedSlowRate == 0 && isSlowDown)
+            {
+                isSlowDown = false;
+
+                if (SlowDownParticle != null)
+                {
+                    SlowDownParticle.Stop();
+                    SlowDownParticle.Clear();
+                }
+            }
 
             Vector3 curPos = m_NavMeshAgent.transform.position;
             bool swithNode = false;
@@ -1012,13 +1002,24 @@
                     // 移除Agent身上的中毒特效,并播放一个中毒效果消失的特效
                     if (PoisonParticle != null)
                     {
-                        PoisonParticle.Clear();
                         PoisonParticle.Stop();
+                        PoisonParticle.Clear();
                         if (PoisonEndParticle != null)
                             PoisonEndParticle.Play();
                     }
                 }
 
+                if (isSlowDown)
+                {
+                    isSlowDown = false;
+
+                    if (SlowDownParticle != null)
+                    {
+                        SlowDownParticle.Stop();
+                        SlowDownParticle.Clear();
+                    }
+                }
+
                 mAnim.SetBool("Die", true);
                 // 统一管理器内删除当前的Agent:
                 AgentInsManager.instance.removeAgent(this);

--
Gitblit v1.9.1