102 lines
3.3 KiB
C#
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);
|
|
}
|
|
} |