Dev_Yangho

[Unity] Normalize, Time.deltaTime 본문

Unity

[Unity] Normalize, Time.deltaTime

Yangho 2022. 8. 21. 13:12

Normalize, Time.deltaTime

오브젝트가 이동하는 코드에서 자주보이는 Normalize or normalized, Time.deltaTime에 대해 알아본다.

Normalize

오브젝트 움직이는 코드를 보다 보면 Normalize 또는 normalized를 흔히 보게 된다.
normalize는 정상화되다 라는 뜻으로 주로 벡터를 정규화 하는데에 사용한다.
벡터에 x축, y축이 있다고 하면 캐릭터가 대각선의 방향으로 갈 때에는 x축과 y축에 힘이 동시에 작용된다.
이 때 두 힘이 합쳐지면서 단일 방향으로 나아갈 때보다 더 빠른 속도로 나가는 경우를 방지하기 위해서 벡터의 정규화를 사용한다.

  • Normalize : Vector3.Normalize() : 현재 벡터값을 단위벡터 값으로 변경해버린다.
  • var vector = Vector3.normalized : 현재 Vector3에 대한 값은 유지한 채 단위벡터를 리턴해준다.

Time.deltaTime

이 개념은 주로 누군가와 컴퓨터로 멀티 플레이 할 때를 예로 들어 설명하겠다.
모든 플레이어가 다 동일한 사양의 컴퓨터를 사용하는 것이 아니다.
FPS 게임을 한다고 하면 가장 중요한 것은 반응 속도인데, 내 컴퓨터엔 상대방이 보이지 않는데 상대방의 컴퓨터는 성능이 좋아 내 캐릭터가 보인다면 꽤 많이 불리할 것이다.
이를 방지해주는 것이 Time.deltaTime 이다.

상대방의 프레임 속도가 10이고, 내 프레임 속도가 5라면, 2배라는 어마어마한 반응차이가 날 것이다.
이 때 Time.deltaTime의 코드를 적용하면 상대방의 컴퓨터에선 프레임당 캐릭터가 0.5씩 움직이고, 내 컴퓨터에선 프레임당 캐릭터가 1씩 움직일 것이다.
그럼 결국 상대방의 컴퓨터와 내 컴퓨터에서의 캐릭터가 동일한 위치에 있도록 보일 것이다.

'Unity' 카테고리의 다른 글

[Unity] Time.timeScale  (0) 2022.08.23
[Unity] Coroutine(코루틴) 함수  (0) 2022.08.23
[Unity] 오브젝트 움직이기(transform)  (0) 2022.08.21
[Unity] 접근 제한자  (0) 2022.08.19
[Unity] 오브젝트움직이기(Rigidbody)  (0) 2022.08.19