IdleGirl/Assets/2_Codes/LobbyManager.cs

102 lines
3.3 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using DG.Tweening;
using Unity.VisualScripting;
using UnityEngine.Tilemaps;
using DG.Tweening.Plugins.Options;
using UnityEngine.SocialPlatforms;
using DarkTonic.MasterAudio;
using UnityEngine.SceneManagement;
public class LobbyManager : MonoBehaviour
{
public GameObject UiWorldMap;
public GameObject ButtonPopUp;
public Transform heroImage;
public Transform talkBox;
private bool isFadingOut = false;
public void WorldMapBtnClick()
{
MasterAudio.PlaySound("SFX_Click", 1f, null);
StartCoroutine(LoadSceneAfterDelay(4, 0.5f));
}
public void MenuBtnClick()
{
MasterAudio.PlaySound("SFX_Click", 1f, null);
// 페이드 인
ButtonPopUp.SetActive(true);
CanvasGroup canvasGroup = ButtonPopUp.GetComponent<CanvasGroup>();
canvasGroup.alpha = 0; // 처음에 알파 값을 0으로 설정
canvasGroup.DOFade(1f, 0.5f).OnComplete(() =>
{
// 1초 후에 페이드 아웃 시작
StartCoroutine(FadeOutAfterDelay());
});
}
private IEnumerator FadeOutAfterDelay()
{
if (isFadingOut)
{
// 이미 애니메이션이 실행 중이면 아무것도 하지 않음
yield break;
}
isFadingOut = true; // 애니메이션을 실행 중으로 표시
yield return new WaitForSeconds(1f); // 1초 대기
CanvasGroup canvasGroup = ButtonPopUp.GetComponent<CanvasGroup>();
canvasGroup.DOFade(0f, 0.5f).OnComplete(() =>
{
// 페이드 아웃 완료 후 게임 오브젝트 비활성화
ButtonPopUp.SetActive(false);
isFadingOut = false; // 애니메이션이 종료되었음을 표시
});
}
public void HeroImgBtnClick()
{
// 현재 위치 저장
Vector3 originalPosition = heroImage.position;
// TalkBox 크기를 0에서 1로 키우는 애니메이션
talkBox.localScale = Vector3.zero; // 처음에 크기를 0으로 설정
// Y 위치 변경
heroImage.DOMoveY(heroImage.position.y + 30f, 0.3f).SetEase(Ease.OutBack).OnComplete(() =>
{
// 원래 위치로 되돌아오기
heroImage.DOMove(originalPosition, 0.1f).SetEase(Ease.InBack).OnComplete(() =>
{
// 좌우로 흔들림 효과
heroImage.DOPunchPosition(new Vector3(10f, 0f, 0f), 1f);
// 크기를 1로 키움
talkBox.gameObject.SetActive(true); // GameObject를 활성화합니다.
talkBox.DOScale(Vector3.one, 0.3f).SetEase(Ease.OutBack).OnComplete(() =>
{
// 2초 후에 크기를 0으로 줄여 사라지는 애니메이션
DOTween.Sequence()
.AppendInterval(1.5f) // 1.2초 대기
.Append(talkBox.DOScale(Vector3.zero, 0.3f).SetEase(Ease.InBack).OnComplete(() =>
{
// 애니메이션 완료 후 처리할 내용을 여기에 추가할 수 있습니다.
}));
});
});
});
}
private IEnumerator LoadSceneAfterDelay(int sceneIndex, float delay)
{
yield return new WaitForSeconds(delay);
SceneManager.LoadScene(sceneIndex);
}
}