백지부터 시작하는 이세계 코딩 생활

Time.deltatime 본문

백지부터 시작하는 이세계 유니티 생활 since 2020

Time.deltatime

조아덕 2020. 11. 17. 11:29
Time.deltatime

Time. 함수를 사용하면 프레임 동기화를 시킬 수 있다.

이미지 클릭 => 확대


Time. 함수를 사용하면 프레임 동기화를 시킬 수 있다.

Update 함수는 프로그램에서 정해진 시간간격으로 호출되는데 ( FPS ) 프로그램 사용하는 유저들 사이에 이 FPS 값이 다를 수 있다. FPS 값이 높은 COM 에서는 상대적으로 우위를 가질 수 있기 때문에 이를 방지하고자 프레임 시간 동기화를 해줘야 한다. 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerController : MonoBehaviour
{
    private Rigidbody rigid;
    private float forwardForce = 1500.0f;
    private float sidewayForce = 1500.0f;
    // Start is called before the first frame update
    void Start()
    {
        rigid = GetComponent<Rigidbody>();
    }

    // Update is called once per frame
    void FixedUpdate()
    {
        if (Input.GetKey("w"))
            rigid.AddForce(0, 0, forwardForce * Time.deltaTime);

        if (Input.GetKey("s"))
            rigid.AddForce(0, 0, -forwardForce * Time.deltaTime);

        if (Input.GetKey("a"))
            rigid.AddForce(-sidewayForce * Time.deltaTime, 0, 0);

        if (Input.GetKey("d"))
            rigid.AddForce(sidewayForce * Time.deltaTime, 0, 0);

        if (rigid.position.y < -1f)
            FindObjectOfType<GameManager_Youtube>().EndGame();        
    }
}

 

그 밖에 Time 함수들 ( Ref. Unity Documentation )

fixedDeltaTime 

물리효과(physics)와 다른 고정 프레임률 업데이트(fixed frame rate update)(MonoBehaviour의 FixedUpdate의 경우)가
수행되는 초 단위의 간격을 나타냅니다.

FixedUpdate함수 또는 Update함수에서 delta time을 읽어오는 경우에, Time.deltaTime은 자동으로, 맞는 delta time을 반환하기 때문에, Time.deltaTime을 대신 사용하는 것을 권장합니다.

fixedDeltaTime 간격은 timeScale에 의해 영향을 받는 상대적인 값이라는 점을 주의하십시오.

 

fixedTime

가장 최근의 FixedUpdate가 시작된 시간으로부터 경과된 시간을 나타냅니다.(읽기전용) 게임의 시작시간으로부터 경과된 시간을 나타냅니다.

Fixed time is updated in regular intervals (equal to fixedDeltaTime) until time property is reached.

 

frameCount

경과한 총 프레임 수를 나타냅니다. (읽기전용)

 

realtimeSinceStartup

게임이 시작된 시간으로부터 경과한 실제 시간을 나타내며, 단위는 초를 사용합니다. (읽기전용)
거의 모든 경우에, Time.time을 대신 사용하게 됩니다.

/realtimeSinceStartup/은 Time.timeScale의 영향을 받지않는, 시작시간으로부터 경과한 시간을 반환합니다. /realtimeSinceStartup/은 플레이어가 일시정지를 한 경우에도, 시간값이 증가합니다. /realtimeSinceStartup/을 사용하면, Time.timeScale을 0으로 설정해서 게임을 일시정지를 하지만 시간을 계속 측정하고 싶은 경우에 유용합니다.

/realtimeSinceStartup/은 시스템 타이머에 의해 보고되는 시간을 반환합니다. 하드웨어와 플랫폼에 의존적이며, 몇 프레임이 연속으로 지난 경우에도, 같은 시간이 보고될 수 있습니다.

 

timeScale

시간이 경과하는 크기를 나타냅니다. 슬로우 모션 효과에 사용될 수 있습니다.

/timeScale/이 1.0인 경우에, 실제 시간과 같은 속도로 경과합니다. /timeScale/이 0.5인 경우에, 실제 시간과 비교해서 2배 느리게 경과합니다.
/timeScale/이 0으로 설정되는 경우에, 일반적으로 프레임비율(framerate)과 독립적으로, 모든 기능을 일시정지 합니다.
realtimeSinceStartup를 제외하고, /timeScale/은 Time클래스의 변수를 측정하는, 모든 time과 delta time에 영향을 줍니다. /timeScale/을 낮추는 경우에, 같은 크기로 Time.fixedDeltaTime도 같이 낮추는 것을 권장합니다.

Comments