본문 바로가기
유니티 개발일지

유니티 Time 클래스 (메서드 종류, 활용 예시)

by 곰스타일 2023. 4. 24.
728x90
반응형
SMALL

유니티에서 Time 클래스는 게임 시간을 추적하고 다양한 시간 기반 기능을 수행하는 데 사용됩니다.

유니티에서 Time 클래스에서 사용할 수 있는 다양한 함수와 메서드는 다음과 같습니다.

 

시간 설정 및 변환

Time.time: 게임이 시작된 이후 경과한 시간 (초)
Time.fixedTime: Fixed Timestep 이후 경과한 시간 (초)
Time.deltaTime: 마지막 프레임과 현재 프레임 사이의 시간 (초)
Time.fixedDeltaTime: Fixed Timestep (고정된 시간 간격) (초)
Time.timeScale: 시간의 스케일을 조절하여 게임을 느리게하거나 빠르게 만듭니다.

 

시간 조절

Time.timeScale: 시간의 스케일을 조절하여 게임을 느리게하거나 빠르게 만듭니다.

 

시간 관련 이벤트

Time.frameCount: 게임이 시작된 이후 프레임 수
Time.timeSinceLevelLoad: 현재 레벨이 로드된 이후 경과한 시간 (초)
Time.realtimeSinceStartup: 게임이 시작된 이후 경과한 실제 시간 (초)
Time.unscaledDeltaTime: 마지막 프레임과 현재 프레임 사이의 시간 (초) (시간 스케일 적용 X)
Time.unscaledTime: 게임이 시작된 이후 경과한 시간 (초) (시간 스케일 적용 X)


이러한 함수와 메서드를 사용하여 게임에서 시간을 관리하고, 시간 기반 기능을 수행할 수 있습니다.

 

활용 예시
  • 게임 시간 기반 동작

아래의 예제는 움직이는 플랫폼을 구현한 예제입니다.

게임이 시작된 이후 경과한 시간을 이용하여 플랫폼을 이동시킵니다.

using UnityEngine;

public class MovingPlatform : MonoBehaviour
{
    public float speed = 2f;
    private Vector3 direction = Vector3.right;

    void Update()
    {
        // 게임 시작 이후 경과한 시간에 따라 플랫폼을 이동합니다.
        transform.position += direction * speed * Time.deltaTime;
    }
}
  • 무브먼트 애니메이션 제어

아래의 예제는 플레이어 이동과 무브먼트 애니메이션을 제어하는 예제입니다.

플레이어 이동과 함께, Time.deltaTime을 사용하여 애니메이션 재생 시간을 조정합니다.

using UnityEngine;

public class PlayerMovement : MonoBehaviour
{
    public float speed = 5f;
    private Animator animator;

    void Start()
    {
        animator = GetComponent<Animator>();
    }

    void Update()
    {
        // 플레이어 이동
        float x = Input.GetAxis("Horizontal");
        float y = Input.GetAxis("Vertical");
        transform.position += new Vector3(x, y, 0) * speed * Time.deltaTime;

        // 플레이어 이동 애니메이션 제어
        if (x != 0 || y != 0)
        {
            animator.SetBool("IsMoving", true);
        }
        else
        {
            animator.SetBool("IsMoving", false);
        }
    }
}
  • 게임 일시 정지

아래의 예제는 P 키를 눌렀을 때 게임을 일시정지하는 예제입니다. Time.timeScale 속성을 이용하여 게임 속도를 조절할 수 있습니다. 게임 일시정지 시, Time.timeScale을 0으로 설정하여 게임을 멈춥니다.

 

using UnityEngine;

public class GameManager : MonoBehaviour
{
    private bool isPaused = false;

    void Update()
    {
        // P 키를 눌렀을 때 게임 일시정지
        if (Input.GetKeyDown(KeyCode.P))
        {
            isPaused = !isPaused;
            if (isPaused)
            {
                Time.timeScale = 0f; // 시간 스케일 0으로 설정하여 게임 일시정지
            }
            else
            {
                Time.timeScale = 1f; // 시간 스케일 1로 설정하여 게임 재개
            }
        }
    }
}
728x90
반응형
LIST

댓글