public void OnEvent(UIVirusAddLevelCoinEvent eventType) { var rt = transform as RectTransform; Vector2 pos = VirusTool.SceneToUguiPos(rt, eventType.WorldPos); var coin = PropPools.Instance.Spawn("Coin"); coin.transform.SetParent(coinParent); var rectTransform = coin.transform as RectTransform; rectTransform.localScale = Vector3.one; if (rectTransform != null) { rectTransform.anchoredPosition = pos; Vector2 e = _coinBg.anchoredPosition; Vector2 s = pos; Vector2 dir = Quaternion.Euler(0, 0, -90) * (e - s).normalized; float mul = Random.Range(0, 2) == 1 ? 1f : -1f; float t1 = Random.Range(0.3f, 0.5f); Vector2 mid = Vector2.Lerp(s, e, t1) + mul * dir * Random.Range(1.0f, 2.0f) * 100f; float dis = (e - s).magnitude; DOVirtual.Float(0, 10, dis / 1000f, (t) => { Vector2 p = VirusTool.GetBesselPoint(s, e, mid, t / 10f); rectTransform.anchoredPosition = p; }).OnComplete(() => { PropPools.Instance.DeSpawn(coin); _isLerp = true; VirusSoundMrg.Instance.PlaySound(VirusSoundType.LevelCoin); }); } }
public void OnEvent(UIVirusAddTotalCoinEvent eventType) { Vector2 pos = eventType.UiPos; var coin = PropPools.Instance.Spawn("Coin"); coin.transform.SetParent(coinParent); var rectTransform = coin.transform as RectTransform; rectTransform.localScale = Vector3.one; if (rectTransform != null) { rectTransform.anchoredPosition = pos; Vector2 e = _coinBg.anchoredPosition; Vector2 s = pos; Vector2 dir = Quaternion.Euler(0, 0, -90) * (e - s).normalized; float mul = eventType.IsPositive ? 1f : -1f; float t1 = Random.Range(-0.5f, 0.5f); Vector2 mid = Vector2.Lerp(s, e, t1) + mul * dir * Random.Range(1.0f, 2.0f) * 200f; float dis = (e - s).magnitude; DOVirtual.Float(0, 10, dis / 1500f, (t) => { Vector2 p = VirusTool.GetBesselPoint(s, e, mid, t / 10f); rectTransform.anchoredPosition = p; }).OnComplete(() => { PropPools.Instance.DeSpawn(coin); _isLerp = true; if (!_isSet) { _isSet = true; _totalTime = 0.15f; _num = 5; VirusSoundMrg.Instance.PlaySound(VirusSoundType.TotalCoin); } }); } }