본문 바로가기
Unity/스크립트

void FixedUpdate()

by 세에레_freewing 2023. 3. 14.
반응형

디폴트로 0.02초 (초당 50회)마다 실행된다.

Update()처럼 매번 반복 실행되나 프레임에 기반하지 않고 어떤 고정적이고 동일한 시간에 기반하여 실행된다.


 Update()와의 차이점


Update()는 화면 한번 깜빡일때마다 실행되서 렉걸리거나 환경이 안좋거나 하면 그만큼 Update()도 적게 실행되지만
Fixedupdate()는 환경에 상관없이 무조건 실행 횟수를 지킨다. 정해진 수만큼 무조건 실행 함


프레임과 상관없이 고정적인 시간마다 실행되기 때문에 환경에 상관없이 물리처리를 오차 없이 실행시킬 수 있다.

 


물리처리는 FixedUpdate() 안에서 해주기.


Time.fixedDeltaTime 의 시간 간격으로 실행이 된다. 디폴트로 Time.fixedDeltaTime 값은 0.02f 이다.

 


FixedUpdate와 Update의 차이점

FixedUpdate
프레임마다 호출되지 않는다. 독립적인 타이머가 존재하여 정해진, 고정적인 시간 간격으로 호출된다.
프레임과 관계없이 규칙적으로 호출되므로 물리적인 연산을 할 때 이 곳에서 하는게 좋다.
프레임은 시스템 환경을 따라가므로 컴퓨터 환경이 좋지 않으면 느리고 불규칙적으로 변할 수 있기 때문에 Rigidbody 같은 어떤 물리 효과가 적용된 움직임 처리를 Update 안에 구현하는건 좋지 않다.
TimeSCale에 의존하기 때문에 Time.timeScale = 0;이 될 때 실행되지 않는다.
Time.fixedDeltaTime마다 실행된다. 이는 0.02초로 고정되어 있다.

 


Update
프레임마다 호출된다.
TimeSCale에 의존하지 않기 때문에 Time.timeScale = 0;이 될 때도 Update 함수 자체는 실행이 된다.
다만 이 안에서 deltaTime을 사용하여 움직임을 제어한게 있었다면 멈춤

반응형