You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

48 lines
1.2 KiB

  1. using System.Collections;
  2. using UnityEngine;
  3. using TMPro;
  4. [RequireComponent(typeof(TextMeshPro))]
  5. public class MoveAndFade : MonoBehaviour
  6. {
  7. [SerializeField]
  8. private float AnimationTime;
  9. [SerializeField]
  10. [Tooltip("End point in local position")]
  11. private Vector3 EndPoint;
  12. [SerializeField]
  13. private AnimationCurve FadeCurve;
  14. private TextMeshPro text;
  15. private void Start()
  16. {
  17. text = GetComponent<TextMeshPro>();
  18. StartCoroutine(FadeAndMove());
  19. }
  20. private IEnumerator FadeAndMove()
  21. {
  22. Vector3 startPoint = transform.position;
  23. Vector3 endPoint = transform.position + EndPoint;
  24. float startAlpha = text.color.a;
  25. float elapsedTime = 0;
  26. while(elapsedTime < AnimationTime)
  27. {
  28. float ratio = elapsedTime / AnimationTime;
  29. float fadeValue = Mathf.Lerp(startAlpha,0.0f, FadeCurve.Evaluate(ratio));
  30. text.color = new Color(text.color.r, text.color.g, text.color.b, fadeValue);
  31. transform.position = Vector3.Lerp(startPoint, endPoint, ratio);
  32. yield return new WaitForEndOfFrame();
  33. elapsedTime += Time.deltaTime;
  34. }
  35. Destroy(gameObject);
  36. }
  37. }