From 080100a11100ac8ee44f0742d0a55b12d5db8485 Mon Sep 17 00:00:00 2001 From: chenxin <chenxin6991@163.com> Date: Fri, 11 Dec 2020 17:13:24 +0800 Subject: [PATCH] 金币效果调整 --- Assets/Scripts/TowerDefense/UI/HUD/EndlessCurrencyUI.cs | 88 +++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 86 insertions(+), 2 deletions(-) diff --git a/Assets/Scripts/TowerDefense/UI/HUD/EndlessCurrencyUI.cs b/Assets/Scripts/TowerDefense/UI/HUD/EndlessCurrencyUI.cs index e07fefc..f45903b 100644 --- a/Assets/Scripts/TowerDefense/UI/HUD/EndlessCurrencyUI.cs +++ b/Assets/Scripts/TowerDefense/UI/HUD/EndlessCurrencyUI.cs @@ -3,6 +3,8 @@ using TMPro; using TowerDefense.Level; using UnityEngine; +using DG.Tweening; +using Core.Utilities; namespace TowerDefense.UI.HUD { @@ -19,6 +21,21 @@ protected Currency currency; private ParticleSystem goldGetPs;//金币获得动画 + + /// <summary> + /// 每秒增加的金币数量 + /// </summary> + private int addCurrencyPerSecond; + + private float duration; + + /// <summary> + /// 一秒前金币 + /// </summary> + private int lastCurrency; + + [SerializeField] + private GameObject addCurrencyPrefab; private void Start() { @@ -52,12 +69,33 @@ protected void UpdateDisplay() { int current = currency.currentCurrency; - //DisplayText.text = AddNumberSemi(current.ToString()); + int lastCurrency = currency.lastCurrency; DisplayText.text = current.ToString(); + if (lastCurrency > 0 && current - lastCurrency > 0) + ToBig().OnComplete(ToSmall); } - public void PlayGetGoldPS(){ + private Tweener ToBig() + { + return DOTween.To( + () => DisplayText.transform.localScale, + (Vector3 v) => DisplayText.transform.localScale = v, + new Vector3(1.15f, 1.15f, 1.15f), + 0.15f); + } + + private void ToSmall() + { + DOTween.To( + () => DisplayText.transform.localScale, + (Vector3 v) => DisplayText.transform.localScale = v, + new Vector3(1f, 1f, 1f), + 0.1f); + } + + public void PlayGetGoldPS() + { goldGetPs.Play(); } @@ -74,5 +112,51 @@ } return str; } + + private void Update() + { + FloatAddCurrency(); + } + + /// <summary> + /// 飘1s内增加的金币 + /// </summary> + private void FloatAddCurrency() + { + if (duration <= 0.0001f) + { + lastCurrency = currency.currentCurrency; + } + + duration += Time.deltaTime; + + if (duration >= 1f) + { + int add = currency.currentCurrency - lastCurrency; + + if (add > 0) + { + GameObject obj = Instantiate(addCurrencyPrefab); + obj.transform.SetParent(GameObject.Find("UICamera/BottomCanvas/Panel/Bottom/CurrencyContainer").transform, false); + obj.transform.localPosition = new Vector3(148f, -30f, 0f); + obj.transform.localScale = new Vector3(0.66f, 0.66f, 0.66f); + TextMeshProUGUI textMeshProUGUI = obj.GetComponent<TextMeshProUGUI>(); + textMeshProUGUI.text = $"+{add}"; + + DOTween.To( + () => obj.transform.localPosition.y, + (float v) => + { + Vector3 pos = obj.transform.localPosition; + pos.y = v; + obj.transform.localPosition = pos; + }, + -20f, 0.2f); + Destroy(obj, 0.5f); + } + + duration = 0f; + } + } } } \ No newline at end of file -- Gitblit v1.9.1