invitePlayer.cs 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using DG.Tweening;
  5. public class InviteUIManager : MonoBehaviour
  6. {
  7. [Header("UI References")]
  8. [SerializeField] private GameObject inviteUI , beingInviteUI;
  9. [SerializeField] private CanvasGroup uiCanvasGroup , bUiCanvasGroup ;
  10. [SerializeField] private RectTransform uiRectTransform , panelRect ;
  11. [Header("Animation Settings")]
  12. [SerializeField] private float appearDuration = 0.3f;
  13. [SerializeField] private float disappearDuration = 0.2f;
  14. [SerializeField] private Ease appearEase = Ease.OutBack;
  15. [SerializeField] private Ease disappearEase = Ease.InBack;
  16. [SerializeField] private Vector2 offScreenPosition = new Vector2(1200 , -140);
  17. [SerializeField] private Vector2 onScreenPosition = new Vector2(1300 , -140);
  18. private void Start()
  19. {
  20. // Initialize hidden state
  21. uiRectTransform.localScale = Vector3.zero;
  22. uiCanvasGroup.alpha = 0;
  23. inviteUI.SetActive(false);
  24. beingInviteUI.SetActive(false);
  25. onScreenPosition = panelRect.anchoredPosition;
  26. offScreenPosition = new Vector2(
  27. +Screen.width, // Use screen width for consistent off-screen positioning
  28. onScreenPosition.y
  29. );
  30. // Start with panel hidden
  31. panelRect.anchoredPosition = offScreenPosition;
  32. }
  33. void Update()
  34. {
  35. if (Input.GetKeyDown(KeyCode.L))
  36. {
  37. ShowPanel();
  38. }
  39. }
  40. private void OnMouseDown()
  41. {
  42. ShowInviteUI();
  43. }
  44. public void ShowInviteUI()
  45. {
  46. inviteUI.SetActive(true);
  47. // Reset values before animation
  48. uiCanvasGroup.alpha = 0;
  49. uiRectTransform.localScale = Vector3.zero;
  50. // Parallel animations
  51. Sequence showSequence = DOTween.Sequence();
  52. showSequence.Append(uiRectTransform.DOScale(1, appearDuration).SetEase(appearEase))
  53. .Join(uiCanvasGroup.DOFade(1, appearDuration))
  54. .SetUpdate(true); // Ensures animation runs smoothly even if time scale is modified
  55. // Add to ShowInviteUI()
  56. Camera.main.DOShakePosition(0.2f, 0.1f, 1, 90f, false );
  57. // Ensures animation runs smoothly even if time scale is modified
  58. }
  59. public void CloseInviteUI()
  60. {
  61. // Animate before disabling
  62. Sequence hideSequence = DOTween.Sequence();
  63. hideSequence.Append(uiRectTransform.DOScale(0, disappearDuration).SetEase(disappearEase))
  64. .Join(uiCanvasGroup.DOFade(0, disappearDuration))
  65. .OnComplete(() => inviteUI.SetActive(false));
  66. }
  67. public void ShowPanel()
  68. {
  69. Debug.Log("ShowPanel called");
  70. // Enable panel before animation
  71. beingInviteUI.SetActive(true);
  72. panelRect.DOAnchorPos(onScreenPosition, 0.5f)
  73. .SetEase(Ease.OutBack);
  74. }
  75. public void HidePanel()
  76. {
  77. panelRect.DOAnchorPos(offScreenPosition, 0.5f)
  78. .SetEase(Ease.OutBack)
  79. .OnComplete(() => beingInviteUI.SetActive(false));
  80. }
  81. }