From 9af945552ac077706c175c00ad99dc4dfc662e9d Mon Sep 17 00:00:00 2001
From: wangguan <wangguan@kt007.com>
Date: Thu, 26 Nov 2020 14:41:19 +0800
Subject: [PATCH] 增加特殊金币掉落 点击飞向左下角 增加技能充满特效

---
 Assets/Scripts/TowerDefense/Economy/LootDrop.cs |   56 ++++++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 46 insertions(+), 10 deletions(-)

diff --git a/Assets/Scripts/TowerDefense/Economy/LootDrop.cs b/Assets/Scripts/TowerDefense/Economy/LootDrop.cs
index 1fdc00c..cf518aa 100644
--- a/Assets/Scripts/TowerDefense/Economy/LootDrop.cs
+++ b/Assets/Scripts/TowerDefense/Economy/LootDrop.cs
@@ -95,37 +95,58 @@
             {
                 Agent agent = gameObject.GetComponent<Agent>();
 
+
                 if (agent != null)
                 {
+                    if (EndlessLevelManager.instance.DropRate > 0)
+                    {
+                        //查询
+                        float rate = Random.Range(0, 100) * 0.01f;
+                        //Debug.Log($"需要处理掉落特效 rate:{rate}  EndlessLevelManager.instance.DropRate:{EndlessLevelManager.instance.DropRate}");
+                        if (rate <= EndlessLevelManager.instance.DropRate)
+                        {
+                            PlayDropCoinPS(agent.position);
+                        }
+                    }
+
                     EndlessLevelManager.instance.Currency.AddCurrency(lootDropped);
                     PlayDropGold(lootDropped, agent.position);
 
                     // 处理掉落
-                    int tunel = agent.waveLineID + 1;
+                    // int tunel = agent.waveLineID + 1;
 
-                    List<reward> rewardList = EndlessPortData.GetDropRewardList(EndlessLevelManager.instance.CurrentLevel,
-                        EndlessLevelManager.instance.WaveManager.CurrentWaveIndex + 1, tunel);
+                    // List<reward> rewardList = EndlessPortData.GetDropRewardList(EndlessLevelManager.instance.CurrentLevel,
+                    //     EndlessLevelManager.instance.WaveManager.CurrentWaveIndex + 1, tunel);
 
-                    if (rewardList.Count > 0)
-                        EndlessDropManager.instance.AddDrop(rewardList, gameObject.transform.position);
+                    // if (rewardList.Count > 0)
+                    //     EndlessDropManager.instance.AddDrop(rewardList, gameObject.transform.position);
                 }
             }
+        }
+        GameObject dropGoldPrefab;
+        GameObject mainUI;
+        Camera camera3D;
+        /// <summary>
+        /// Awake is called when the script instance is being loaded.
+        /// </summary>
+        void Awake()
+        {
+            mainUI = GameObject.Find("MainUI");
+            dropGoldPrefab = Resources.Load<GameObject>("Prefabs/DropGold");
+            camera3D = GameObject.Find("SceneCamera3D").GetComponent<Camera>();
         }
 
         private void PlayDropGold(int lootDropped, Vector3 worldPos)
         {
             if (lootDropped == 0) return;
 
-            GameObject mainUI = GameObject.Find("MainUI");
-            GameObject dropGoldPrefab = Resources.Load<GameObject>("Prefabs/DropGold");
             GameObject obj = Poolable.TryGetPoolable(dropGoldPrefab);
 
             DropGold dropGold = obj.GetComponent<DropGold>();
             dropGold.SetDrop(lootDropped);
 
-            obj.GetComponent<Transform>().SetParent(GameObject.Find("MainUI").GetComponent<Transform>(), false);
-            Camera camera = GameObject.Find("SceneCamera3D").GetComponent<Camera>();
-            Vector3 screenPos = camera.WorldToScreenPoint(worldPos);
+            obj.GetComponent<Transform>().SetParent(mainUI.GetComponent<Transform>(), false);
+            Vector3 screenPos = camera3D.WorldToScreenPoint(worldPos);
             screenPos.z = 0;
             obj.transform.position = screenPos;
             obj.transform.localScale = new Vector3(0.8f, 0.8f, 0.8f);
@@ -154,5 +175,20 @@
                     Poolable.TryPool(obj);
                 });
         }
+
+        private void PlayDropCoinPS(Vector3 worldPos)
+        {
+            GameObject prefab = Resources.Load<GameObject>("Prefabs/DropCoin");
+            GameObject obj = Poolable.TryGetPoolable(prefab);
+            obj.transform.position = worldPos;
+
+            GameObject prefabIcon = Resources.Load<GameObject>("Prefabs/DropCoinImage");
+            GameObject obj1 = Poolable.TryGetPoolable(prefabIcon);
+            obj1.GetComponent<Transform>().SetParent(mainUI.GetComponent<Transform>(), false);
+            Vector3 screenPos = camera3D.WorldToScreenPoint(worldPos);
+            screenPos.z = 0;
+            obj1.transform.position = screenPos;
+            obj1.GetComponent<DropCoinImage>().Init();
+        }
     }
 }
\ No newline at end of file

--
Gitblit v1.9.1