chenxin
2020-11-11 515d6439e79793dc903b249cfeb8fc2f217f2e4e
Assets/Scripts/TowerDefense/Level/EndlessDropManager.cs
@@ -45,7 +45,7 @@
        /// <summary>
        /// 掉落半径
        /// </summary>
        public float DropRadius { get; set; } = 50f;
        public float DropRadius { get; set; } = 5f;
        public Canvas canvas;
@@ -54,6 +54,7 @@
        {
            AllDropList = new List<EndlessDrop>();
            DropObjDic = new Dictionary<int, GameObject>();
            allIconLis = new List<FlyImage>();
        }
        // Update is called once per frame
@@ -67,9 +68,12 @@
                if (AllDropList[i].ElapsedTime >= AllDropList[i].AutoPickupTime)
                {
                    AllDropList[i].IsPickupCompleted = true;
                    SafelyCallObtainDrop(AllDropList[i]);
                    RemoveDrop(AllDropList[i].Id);
                    EndlessDropReward dropReward = DropObjDic[AllDropList[i].Id].GetComponent<EndlessDropReward>();
                    // dropReward?.OnClick();
                    //AllDropList[i].IsPickupCompleted = true;
                    //SafelyCallObtainDrop(AllDropList[i]);
                    //RemoveDrop(AllDropList[i].Id);
                }
            }
        }
@@ -100,15 +104,15 @@
        /// <param name="pos">小怪的世界坐标</param>
        public void AddDrop(List<reward> list, Vector3 pos)
        {
            for (int i = 0; i < list.Count; ++i)
            {
                EndlessDrop drop = new EndlessDrop();
                drop.Reward = list[i];
                drop.Id = GetDropId();
                drop.AutoPickupTime = AutoPickupTime;
                CreateDrop(drop, pos, list.Count > 0);
                AllDropList.Add(drop);
            }
            // for (int i = 0; i < list.Count; ++i)
            // {
            //     EndlessDrop drop = new EndlessDrop();
            //     drop.Reward = list[i];
            //     drop.Id = GetDropId();
            //     drop.AutoPickupTime = AutoPickupTime;
            //     CreateDrop(drop, pos, list.Count > 0);
            //     AllDropList.Add(drop);
            // }
        }
        /// <summary>
@@ -139,24 +143,25 @@
            dropReward.DropData = drop;
            dropReward.SetIcon();
            GameObject mainUI = GameObject.Find("MainUI");
            GameObject mainUI = GameObject.Find("BottomUI");
            Transform mainUITransform = mainUI.GetComponent<Transform>();
            Transform mainUITransform = mainUI.transform;
            obj.transform.SetParent(mainUITransform, false);
            // Vector3 screenPos = Camera.main.WorldToScreenPoint(worldPos);
            // Vector2 pos;
            // RectTransformUtility.ScreenPointToLocalPointInRectangle(mainUITransform as RectTransform, screenPos, Camera.main, out pos);
            // (obj.transform as RectTransform).anchoredPosition = pos;
            obj.GetComponent<Transform>().SetParent(mainUITransform, true);
            // Vector3 screenPos = Camera.main.WorldToScreenPoint(worldPos);
            // Vector2 targetPos;
            // RectTransformUtility.ScreenPointToLocalPointInRectangle(canvas.transform as RectTransform, screenPos, canvas.worldCamera, out targetPos);
            // RectTransform rectTransform =  obj.GetComponent<RectTransform>();
            // rectTransform.anchoredPosition = pos;
            // obj.transform.localRotation = Quaternion.identity;
            // Vector3 screenPos = Camera.main.WorldToScreenPoint(worldPos);
            // screenPos.z = 0;
            obj.transform.position = worldPos;
            obj.transform.localRotation = Quaternion.identity;
            obj.transform.localScale = Vector3.one;
            Vector3 offect = obj.GetComponent<RectTransform>().anchoredPosition3D;
            offect.z = 0;
            obj.GetComponent<RectTransform>().anchoredPosition3D = offect;
            // obj.transform.localRotation = Quaternion.identity;
            // obj.transform.localScale = Vector3.one;
            // if (isRandom)
            // {
@@ -164,7 +169,7 @@
            //     Vector3 pos1 = p.normalized * p.magnitude;
            //     Vector3 objPos = obj.transform.position;
            //     objPos.x += pos1.x;
            //     objPos.y += pos1.y;
            //     objPos.z += pos1.y;
            //     obj.transform.position = objPos;
            // }
@@ -172,6 +177,55 @@
            DropObjDic.Add(drop.Id, obj);
        }
        List<FlyImage> allIconLis;
        public GameObject drapIcon;
        public FlyImage CreateIcon(Transform ts)
        {
            for (int i = 0; i < allIconLis.Count; i++)
            {
                if (!allIconLis[i].gameObject.activeSelf)
                {
                    allIconLis[i].gameObject.SetActive(true);
                    return allIconLis[i];
                }
            }
            GameObject obj = Instantiate(drapIcon, ts);
            FlyImage fly = obj.GetComponent<FlyImage>();
            allIconLis.Add(fly);
            return fly;
        }
        public void FlyIcon(Transform ts, Sprite sp, Vector3 startP, Vector3 endP, bool useBezier)
        {
            StartCoroutine(CreateIcon(ts, sp, startP, endP, useBezier));
        }
        IEnumerator CreateIcon(Transform ts, Sprite sp, Vector3 startP, Vector3 endP, bool useBezier)
        {
            FlyImage fly;
            // for (int i = 0; i < 5; i++)
            // {
            //     fly = CreateIcon(ts);
            //     fly.SetDestination(sp, startP, endP, useBezier);
            // }
            // yield return new WaitForSeconds(0.2f);
            for (int i = 0; i < 15; i++)
            {
                fly = CreateIcon(ts);
                fly.SetDestination(sp, startP, endP, useBezier);
                yield return new WaitForSeconds(0.01f);
            }
            yield break;
        }
        /// <summary>
        /// 调用掉落获得事件
        /// </summary>