일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 데브런 #노코드게임제작 #데브런와디즈 #AI게임제작
- Steam Achievement Reset
- django
- sqlite3
- 파이썬
- 파이썬 패키지 설치
- #데브런 #노코드 #노코드게임제작 #데브런와디즈 #ai게임제작
- error
- 튜플 단일 요소
- Unity
- 인덱싱
- 슬라이싱
- 스팀 도과 Reset
- 도과 테스트
- 장고
- 상속
- 연산자
- Achievement unity
- 도전과제 unity
- 테이블 생성
- 오프라인 환경
- 회원가입
- Python
- header
- JavaScript
- 모듈
- 스팀 도전과제 Reset
- nodejs
- 파이썬 웹 개발
- HTML
- Today
- Total
개발성문
Unity Time.deltaTime 과 Time.smoothDeltaTime 에 대하여 본문
이번 포스팅은 Time.deltaTime 과 Time.smoothDeltaTime 에 대한 내용을 정리해보려고 합니다.
이 내용을 나가기에 앞서 프레임(Frame)에 대해서 그리고 Unity 의 Update() 함수에 대해 먼저 알아볼께요.
프레임(Frame)은 주로 게임이나 영화, 애니메이션 등에서 언급 되죠.
프레임(Frame)이란 우리가 화면에 보는 정지 영상 한 장을 말합니다.
이 한장의 프레임이 어려장 모여서 움직임을 보여주게 되는 것이죠.
게임에서는 초당 프레임 수 라고해서 Frame per second 라고 합니다.
컴퓨터는 사양이 낮을 수록 프레임 수가 적고, 고사양일 수록 프레임 수가 높다고 하는데요.
그래픽 카드, 저의 경우는 지포스 사용인데 설정에서 프레임 수를 조정 할 수 도 있답니다.
그럼, Unity의 Update() 함수는 무엇일까요.
이 함수는 매 프렘임마다 자동으로 호출 됩니다. 다시 말하면, 프레임당 한 번 호출이 된다는 거죠.
대략 1초에 30 ~60번 호출이 된다고 하는데요. 물론 사양 등에 따라 달라지는 것 같습니다.
어찌되었는 끊임없이 반복되는 함수이기 때문에 중요 핵심 로직 등을 이곳에 작성합니다.
이 함수 안에 1초에 N m 앞으로 전진하는 소스를 적었다고 해보죠.
컴퓨터의 사양에 따라 프레임의 수도 달라지기 때문에 같은 소스라도 결과가 달라질 수가 있습니다.
30 프레임이라면 => N m * 30 프레임 으로 1초에 30N m 를 전진하게 되지만,
60 프레임이라면 => N m * 60 프레임 으로 1초에 60N m 를 전진하게 됩니다.
이와 같이 말이죠.
하지만 여기에 각각 1초에 Update() 함수가 호출되는 횟수를 1/30, 1/60 과 같이 분할하여 이를 더해주면,
30 프레임이라면 => N m * 30 프레임 * ( 1 / 30 )으로 1초에 N m 를 전진하고,
60 프레임이라면 => N m * 60 프레임 * ( 1 / 60 )으로 1초에 N m 를 전진하게 됩니다.
프레임이 다르더라도 동일한 결과값를 얻을 수가 있습니다.
Unity 에서는 이것을 Time.deltaTime 이라는 이름으로 지원해주고 있습니다.
Time.deltaTime 은 화면이 한번 깜박이는 한 프레임의 시간을 나타냅니다.
그래서 사양에 따라 결과값이 달라져서 캐릭터의 이동이라던지 그런 것들이 상이해지는 결과를 방지할 수 있게 됩니다.
하지만 여기에도 문제가 있다고 하는데요.
오브젝트가 순간이동 하는 것처럼 워프 현상이 일어난다고 해서 눈에 보이는 시각적인 부분에서는 쓰지 않기를 권장한다
고 합니다.
이 내용은 제가 공부를 하면서 듣게 된 내용입니다.
그래서 눈에 보이는 시각적인 부분에서 사용하라고 하는 것이 Time.smoothDeltaTime 입니다.
Time.smoothDeltaTime 은 Time.deltaTime을 부드럽게 만든(?) 값 을 나타냅니다.
보다 안정된 값을 가져온다라고 생각하시면 될것 같습니다.
비교를 위해서 로그를 찍어 보았는데 크게 눈에 띄는 부분은 없지만,
뽑아 보자면 smoothDeltaTime 쪽이 값이 균등하게 나오는 것을 보실 수 있습니다.
이게 그 차이이지 않을까 싶구요. 그래서 smoothDeltaTime 에는 별도의 설명이 없는게 아닐까 싶네요.
여기서 마치도록 하겠습니다.
'공부 좀 하자 > Unity' 카테고리의 다른 글
Unity 스카이 박스(Sky Box) 에 대하여 (0) | 2018.03.30 |
---|---|
Unity 터레인 엔진(Terrain Engine) 사용 (0) | 2018.03.30 |
enum(열거 형식 : Enumerator)에 대하여 (0) | 2018.03.26 |
MainCamera Projection 옵션 (0) | 2018.03.26 |
Unity Invoke 함수에 대하여 (0) | 2018.03.16 |