InteractableObject.cs 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.EventSystems;
  5. #pragma warning disable CS0649
  6. #if EPO_DOTWEEN
  7. using DG.Tweening;
  8. #endif
  9. namespace EPOOutline.Demo
  10. {
  11. public class InteractableObject : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler, IPointerClickHandler
  12. {
  13. [SerializeField]
  14. private AudioClip interactionSound;
  15. [SerializeField]
  16. private bool affectOutlinable = true;
  17. private Outlinable outlinable;
  18. private void Start()
  19. {
  20. if (!affectOutlinable)
  21. return;
  22. outlinable = GetComponent<Outlinable>();
  23. #if !EPO_DOTWEEN
  24. outlinable.enabled = false;
  25. #else
  26. outlinable.FrontParameters.DOColor(new Color(0, 0, 1, 0), 0.0f);
  27. outlinable.FrontParameters.DODilateShift(1.0f, 0.0f);
  28. outlinable.FrontParameters.DOBlurShift(0.0f, 0.0f);
  29. #endif
  30. outlinable.FrontParameters.FillPass.SetFloat("_PublicAngle", 35.0f);
  31. }
  32. public void OnPointerEnter(PointerEventData eventData)
  33. {
  34. if (!affectOutlinable)
  35. return;
  36. #if !EPO_DOTWEEN
  37. outlinable.enabled = true;
  38. #else
  39. outlinable.FrontParameters.DOKill(true);
  40. outlinable.FrontParameters.DOColor(new Color(0, 1, 0, 1), 0.5f);
  41. outlinable.FrontParameters.DOBlurShift(1.0f, 0.5f).SetDelay(0.5f);
  42. outlinable.FrontParameters.DODilateShift(0.0f, 0.5f).SetDelay(0.5f);
  43. outlinable.FrontParameters.DOColor(new Color(1, 1, 0, 1), 0.5f).SetDelay(1.0f);
  44. #endif
  45. }
  46. public void OnPointerExit(PointerEventData eventData)
  47. {
  48. if (!affectOutlinable)
  49. return;
  50. #if !EPO_DOTWEEN
  51. outlinable.enabled = false;
  52. #else
  53. outlinable.FrontParameters.DOKill(true);
  54. outlinable.FrontParameters.DOBlurShift(0.0f, 0.5f);
  55. outlinable.FrontParameters.DODilateShift(1.0f, 0.5f);
  56. outlinable.FrontParameters.DOColor(new Color(0, 0, 1, 0), 0.5f).SetDelay(0.5f);
  57. #endif
  58. }
  59. public void OnPointerClick(PointerEventData eventData)
  60. {
  61. AudioSource.PlayClipAtPoint(interactionSound, transform.position, 1.0f);
  62. }
  63. }
  64. }