123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using DG.Tweening;
- public class InviteUIManager : MonoBehaviour
- {
- [Header("UI References")]
- [SerializeField] private GameObject inviteUI , beingInviteUI;
- [SerializeField] private CanvasGroup uiCanvasGroup , bUiCanvasGroup ;
- [SerializeField] private RectTransform uiRectTransform , panelRect ;
-
- [Header("Animation Settings")]
- [SerializeField] private float appearDuration = 0.3f;
- [SerializeField] private float disappearDuration = 0.2f;
- [SerializeField] private Ease appearEase = Ease.OutBack;
- [SerializeField] private Ease disappearEase = Ease.InBack;
- [SerializeField] private Vector2 offScreenPosition = new Vector2(1200 , -140);
- [SerializeField] private Vector2 onScreenPosition = new Vector2(1300 , -140);
- private void Start()
- {
- // Initialize hidden state
- uiRectTransform.localScale = Vector3.zero;
- uiCanvasGroup.alpha = 0;
-
- inviteUI.SetActive(false);
- beingInviteUI.SetActive(false);
- onScreenPosition = panelRect.anchoredPosition;
-
- offScreenPosition = new Vector2(
- +Screen.width, // Use screen width for consistent off-screen positioning
- onScreenPosition.y
- );
- // Start with panel hidden
- panelRect.anchoredPosition = offScreenPosition;
- }
-
- void Update()
- {
- if (Input.GetKeyDown(KeyCode.L))
- {
- ShowPanel();
- }
- }
- private void OnMouseDown()
- {
- ShowInviteUI();
- }
- public void ShowInviteUI()
- {
- inviteUI.SetActive(true);
-
- // Reset values before animation
- uiCanvasGroup.alpha = 0;
- uiRectTransform.localScale = Vector3.zero;
-
- // Parallel animations
- Sequence showSequence = DOTween.Sequence();
- showSequence.Append(uiRectTransform.DOScale(1, appearDuration).SetEase(appearEase))
- .Join(uiCanvasGroup.DOFade(1, appearDuration))
- .SetUpdate(true); // Ensures animation runs smoothly even if time scale is modified
- // Add to ShowInviteUI()
- Camera.main.DOShakePosition(0.2f, 0.1f, 1, 90f, false );
- // Ensures animation runs smoothly even if time scale is modified
- }
- public void CloseInviteUI()
- {
- // Animate before disabling
- Sequence hideSequence = DOTween.Sequence();
- hideSequence.Append(uiRectTransform.DOScale(0, disappearDuration).SetEase(disappearEase))
- .Join(uiCanvasGroup.DOFade(0, disappearDuration))
- .OnComplete(() => inviteUI.SetActive(false));
- }
-
- public void ShowPanel()
- {
- Debug.Log("ShowPanel called");
- // Enable panel before animation
- beingInviteUI.SetActive(true);
-
- panelRect.DOAnchorPos(onScreenPosition, 0.5f)
- .SetEase(Ease.OutBack);
- }
- public void HidePanel()
- {
- panelRect.DOAnchorPos(offScreenPosition, 0.5f)
- .SetEase(Ease.OutBack)
- .OnComplete(() => beingInviteUI.SetActive(false));
- }
- }
|