Update()와 FixedUpdate()의 차이
- Update : 매 프레임마다 호출되는 메서드. 게임 로직의 주요 업데이트가 이루어진다. 매 프레임 호출되는 만큼 불필요한 계산을 피하고 최적화하기 위해 사용하지 않으면 지워주는 것이 좋다.
- FixedUpdate : 물리 엔진 업데이트 시 호출되는 메서드. 물리적인 시뮬레이션에 관련된 작업을 처리할 때 사용된다. Fixed Timestep에 설정된 값에 따라 일정한 간격으로 호출된다.
Update는 불규칙한 호출임으로 물리엔진 충돌검사 등이 제대로 안될 수 있기 때문에 물리적인 시뮬레이션에 관련된 작업을 처리할 때는 FixedUpDate를 사용하는 것이 좋다.
리듬게임의 노트에 판정을 위한 Collider가 붙어있으므로 FixedUpDate를 사용한다.
private float noteSpeed;
private void FixedUpdate()
{
Move();
}
private void Move()
{
transform.position += Vector3.down * noteSpeed * Time.fixedDeltaTime;
}
노트의 정확한 판정을 위해 double을 사용하면 어떨까 해서 적용해보니 Vector3 및 double 형식의 피연산자에 적용할 수 없다고 뜬다.
float에 비해 double의 소수점 범위가 더 크기 때문에 발생하는 문제가 아닐까 예측했는데 double의 연산자 오버로딩이 없어서 그런 것이었다. 즉, 유니티에서 Vector3에 곱하는 방법을 명시하지 않은 것이다.
'부트캠프 > Project' 카테고리의 다른 글
<프로젝트> 팀과제 Unity 리듬 게임(4) (1) | 2024.01.05 |
---|---|
<프로젝트> 팀과제 Unity 리듬 게임(3) (0) | 2024.01.04 |
<프로젝트> 팀과제 Unity 리듬 게임(1) (1) | 2024.01.02 |
<프로젝트> 팀과제 Unity 리듬 게임(기획) (0) | 2023.12.29 |
<프로젝트> 팀과제 Unity 3D 게임 - Cat Survival 회고 (0) | 2023.12.21 |