using System.Collections; using System.Collections.Generic; using CombatLibrary.CombatLibrary.CombatCore.Utility; using Fort23.UTool; using UnityEngine; public class ImageMoveContainer { protected List allImageMove = new List(); public void AddACurve(Vector2 startPos, Vector2 target, float delay, float speed, GameObjectPool gameObjectPool, AnimationCurve ui_showSize = null, AnimationCurve ui_moveSize = null, AnimationCurve ui_moveSpped = null) { ACurve aCurve = new ACurve(); CurveInfo curveInfo = new CurveInfo(); Vector3 p = startPos + (startPos - target).normalized * 1; Vector3 moveTargetPos = new Vector3(p.x + Random.Range(-0, 0), p.y + Random.Range(-0, 0)); Vector2 newStartPos = moveTargetPos; curveInfo.t = newStartPos.x; curveInfo.v = newStartPos.y; curveInfo.BSLt = 0; float x = Random.Range(-10, 10) * 30; Vector3 normal = (target - newStartPos).normalized; normal = new Vector3(Random.Range(-100, 100), Random.Range(-100, 100)); curveInfo.it = normal.x + x + curveInfo.t; curveInfo.ot = normal.y + curveInfo.v + 10; CurveInfo curveInfo2 = new CurveInfo(); curveInfo2.t = target.x; curveInfo2.v = target.y; Vector3 normal2 = (newStartPos - target).normalized; curveInfo2.it = normal2.x + x + curveInfo2.t; curveInfo2.ot = normal2.y + curveInfo2.v + 10; curveInfo2.BSLt = 1; aCurve.CurveInfos = new List(); aCurve.CurveInfos.Add(curveInfo); aCurve.CurveInfos.Add(curveInfo2); aCurve.CurveType = CurveType.BSL; ImageMove currImageMove = new ImageMove(); currImageMove.SizeCurve = ui_moveSize; currImageMove.moveSpeed = ui_moveSpped; // currImageMove.ShowSizeCurve = ui_showSize; // currImageMove.showSizeSpeed = 10; // GameObjectPool gameObjectPool = // GObjectPool.Instance.FetchAsyncForGameObject(moveIcon, "moveIcon"); gameObjectPool.own.SetActive(false); currImageMove.GameObjectPool = gameObjectPool; // gameObjectPool.own.GetComponent().icon_name = itemConfig.icon; currImageMove.transform = gameObjectPool.own.GetComponent(); currImageMove.moveStartPos = startPos; // currImageMove.transform.SetParent(root); currImageMove.transform.anchoredPosition = currImageMove.moveStartPos; currImageMove.yanChi = delay; currImageMove.speed = speed; currImageMove.currAcur = aCurve; allImageMove.Add(currImageMove); } public void RenderUpdateCallBack() { for (int i = 0; i < allImageMove.Count; i++) { ImageMove imageMove = allImageMove[i]; if (imageMove.Update()) { allImageMove.RemoveAt(i); i--; } } } public void Dispose() { for (int i = 0; i < allImageMove.Count; i++) { ImageMove imageMove = allImageMove[i]; GObjectPool.Instance.Recycle(imageMove.GameObjectPool); allImageMove.RemoveAt(i); i--; } } }