일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 게임모작
- start
- 불러오기
- LINQ
- 오브젝트
- C#
- SerializeField
- 저장
- 게임제작
- LateUpdate
- 죽림고수
- ScriptableObject
- 이동
- Transform
- 접근 제한자
- FixedUpdate
- private
- 직렬화
- public
- 이벤트 함수
- AWAKE
- iNTERNAL
- OnEnable
- 초기화
- 모작
- JSON
- protected
- 게임개발
- Update
- Unity
- Today
- Total
정명직의 게임개발
[Unity] 다양한 Update 함수들 (FixedUpdate, LateUpdate) 본문
Unity에서 여러가지 업데이트 함수를 제공합니다. 이 중 FixedUpdate와 LateUpdate는 물리 시뮬레이션과 렌더링 순서를 제어하는데 사용되는 중요한 함수입니다. 이번에는 이 두 함수에 대해 알아보겠습니다.
FixedUpdate
FixedUpdate는 Update와 달리 프레임마다 호출되는 것이 아니라 일정한 시간 간격으로 함수가 호출됩니다. 따라서 매번 일정한 주기로 똑같은 연산을 처리해야 하는 물리 계산에 많이 사용됩니다.
FixedUpdate 호출 간격은 Fixed Timestep을 사용해서 조절할 수 있습니다. Fixed Timestep의 초깃값은 0.02초로 설정되어있습니다. Project Settings의 Time에서 조절할 수 있습니다.
참고로 FixedUpdate에서 Time.deltaTime을 호출하면 Fixed Timestep을 반환합니다.
다음 예제로 확인해보자
void Update()
{
transform.Translate(Vector2.right * Time.deltaTime * 8);
}
Update() 함수 안에 플레이어가 오른쪽으로 움직이는 로직을 작성하였는데 벽에 부딪칠 때 벽에 끼는 현상이 발생하였다.
void FixedUpdate()
{
transform.Translate(Vector2.right * Time.deltaTime * 8);
}
움직이는 로직은 Transform 컴포넌트를 사용하였지만 충돌하는 부분은 Rigidbody 컴포넌트에서 발생하기 때문에 FixedUpdate을 사용하여 해결할 수 있습니다.
LateUpdate
LateUpdate는 Update 함수가 호출된 후에 실행됩니다. 주로 카메라 조작, 정보 수집, 또는 마지막 순간의 조정을 위해 사용됩니다.
예를 들어 플레이어를 따라가는 카메라를 구현할 때, 대부분 플레이어 이동을 구현할 때 Update 함수에서 구현할 때가 많으므로 LateUpdate 함수를 사용하면 Update에서 일어난 이동이 끝나고 카메라가 이동하여 더 정확하고 안정적인 카메라 이동을 보장할 수 있습니다.
아래 예제로 확인해보겠습니다.
public class CameraController : MonoBehaviour
{
public GameObject player; // 플레이어 게임오브젝트
private Vector3 offset; // 플레이어와 카메라 사이 벡터
void Start()
{
offset = transform.position - player.transform.position;
}
void LateUpdate()
{
transform.position = player.transform.position + offset;
}
}
예제에서, 플레이어가 Update 함수에서 이동하더라도, LateUpdate에서 이 움직임을 반영하여 카메라가 정확하게 플레이어를 따라갈 수 있습니다.
이처럼 FixedUpdate와 LateUpdate는 Unity 게임 개발에 있어서 중요한 역할을 합니다. 필요에 따라 적절하게 활용하여 게임 개발 하시길 바랍니다.
'Unity > 이벤트 함수' 카테고리의 다른 글
[Unity] 초기화 이벤트 함수? (Awake, OnEnable, Start) (2) | 2023.07.12 |
---|---|
[Unity] Update? 알고 사용하자 (2) | 2023.07.08 |