OldBlueWater/BlueWater/Assets/Restaurant.cs
2024-03-10 19:11:50 +09:00

65 lines
1.8 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Restaurant : MonoBehaviour
{
public Transform restaurantSwitch;
private bool isSwitchOn = false;
public Transform mainDoor;
public Transform[] guestNpc;
public GameObject[] mainLight;
public void RestaurantSwitchOnOff()
{
isSwitchOn = !isSwitchOn;
if (isSwitchOn)
{
restaurantSwitch.rotation *= Quaternion.Euler(0, 0, -90);
foreach (var light in mainLight)
{
light.SetActive(true);
}
var door = mainDoor.GetComponent<WW_Door>();
door._animator.SetBool("Open", true);
StartCoroutine(ActivateNPCs());
}
else
{
restaurantSwitch.rotation *= Quaternion.Euler(0, 0, 90);
foreach (var light in mainLight)
{
light.SetActive(false);
}
var door = mainDoor.GetComponent<WW_Door>();
door._animator.SetBool("Open", false);
StopAllCoroutines();
}
}
IEnumerator ActivateNPCs()
{
foreach (var npc in guestNpc)
{
if (!isSwitchOn) // 스위치가 꺼지면 코루틴을 즉시 종료
yield break;
if (!npc.gameObject.activeInHierarchy) // NPC가 비활성화 상태인 경우만
{
var waitTime = UnityEngine.Random.Range(3, 11); // 1초에서 10초 사이의 랜덤 대기 시간
yield return new WaitForSeconds(waitTime); // 랜덤 대기
if (!isSwitchOn) // 대기 후 스위치 상태 다시 확인
yield break;
npc.gameObject.SetActive(true); // NPC 활성화
}
}
}
}