public class Stop : MonoBehaviour
{
private void Start()
{
// 초기화 코드
// 이 스크립트를 게임 오브젝트에 추가하고, 호출하고 싶은 곳에서 FreezeObjects 함수를 호출하면 됩니다.
}
public void FreezeObjectsForDuration(float duration)
{
// 움직임을 멈추기 전에 현재의 Time.timeScale 값을 저장
float originalTimeScale = Time.timeScale;
// 모든 Rigidbody2D 컴포넌트를 찾아서 잠시 정지
Rigidbody2D[] allRigidbodies = FindObjectsOfType<Rigidbody2D>();
foreach (Rigidbody2D rb in allRigidbodies)
{
rb.constraints = RigidbodyConstraints2D.FreezeAll;
}
// Time.timeScale 값을 0으로 설정하여 게임 시간을 멈춤
Time.timeScale = 0f;
// 지정된 시간(여기서는 3초) 동안 대기
StartCoroutine(UnfreezeAfterDelay(duration));
// 대기가 끝나면 Time.timeScale 값을 원래대로 복원
Time.timeScale = originalTimeScale;
}
private System.Collections.IEnumerator UnfreezeAfterDelay(float delay)
{
// 3초 대기
yield return new WaitForSecondsRealtime(delay);
// 모든 Rigidbody2D의 제약을 해제하여 다시 활성화
Rigidbody2D[] allRigidbodies = FindObjectsOfType<Rigidbody2D>();
foreach (Rigidbody2D rb in allRigidbodies)
{
rb.constraints = RigidbodyConstraints2D.None;
}
}
}
오늘은 몬스터가 멈추는 코드를 짜봤는데
내일 다시 짜야해요 ㅠ 다른방법으로