StickerEffect.cs 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. using System.Collections;
  2. using UnityEngine;
  3. [RequireComponent(typeof(SpriteRenderer))]
  4. public class StickerEffect : MonoBehaviour
  5. {
  6. private Transform _cachedTransform;
  7. public Transform CachedTransform
  8. {
  9. get
  10. {
  11. if (_cachedTransform == null)
  12. _cachedTransform = transform;
  13. return _cachedTransform;
  14. }
  15. }
  16. private SpriteRenderer _cachedSpriteRenderer;
  17. public SpriteRenderer CachedSpriteRenderer
  18. {
  19. get
  20. {
  21. if (_cachedSpriteRenderer == null)
  22. _cachedSpriteRenderer = GetComponent<SpriteRenderer>();
  23. return _cachedSpriteRenderer;
  24. }
  25. }
  26. private void Awake()
  27. {
  28. CachedTransform.localScale = Vector2.zero;
  29. }
  30. private IEnumerator ShowEffectCoroutine(Sprite stickerImage, Vector2 scale, Quaternion rotate)
  31. {
  32. bool endEffect = false;
  33. CachedSpriteRenderer.sprite = stickerImage;
  34. CachedTransform.rotation = rotate;
  35. gameObject.SetActive(true);
  36. LeanTween.scale(gameObject, scale, 1f).setEaseInOutElastic().setOnComplete(() =>
  37. {
  38. endEffect = true;
  39. });
  40. yield return new WaitUntil(() => endEffect);
  41. yield break;
  42. }
  43. public Coroutine ShowEffect(Sprite stickerImage, Vector2 scale, Quaternion roatation)
  44. {
  45. return StartCoroutine(ShowEffectCoroutine(stickerImage, scale, roatation));
  46. }
  47. }