본문 바로가기

카테고리 없음

11월15일 공부

더보기

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;
        }
    }
}

오늘은 몬스터가 멈추는 코드를 짜봤는데

 

내일 다시 짜야해요 ㅠ 다른방법으로