오늘은 프레임에 따른 로직 실행의 차이와 유니티 물리 시스템의 두 축인 Collision, Trigger의 차이점에 대해 정리해 보겠습니다.
유니티에는 매 프레임 실행되는 함수가 여러 종류 있습니다. 그중 가장 자주 쓰이는 두 함수와 그 차이는 다음과 같습니다.
<style>
using UnityEngine;
public class FrameTest : MonoBehaviour
{
void Update()
{
// 매 프레임 입력을 확인해야 하므로 Update에서 처리
if (Input.GetButtonDown("Jump"))
{
Debug.Log("점프 입력 감지");
}
}
void FixedUpdate()
{
// 물리적인 힘을 가하는 로직은 FixedUpdate에서 안전하게 처리
// 물리 연산은 일정한 주기로 계산되어야 물리 버그가 생기지 않음
}
}
</style>
트리거 이벤트는 Is Trigger가 체크된 오브젝트와 다른 오브젝트의 콜라이더가 겹칠 때 발생하며, 상황에 따라 세 가지 함수를 사용합니다.
<style>
using UnityEngine;
public class TriggerDetector : MonoBehaviour
{
// 1. 진입 순간 (아이템 획득 등)
private void OnTriggerEnter2D(Collider2D collision)
{
if (collision.CompareTag("Item"))
{
Debug.Log("아이템을 획득했습니다!");
Destroy(collision.gameObject);
}
}
// 2. 체류 중 (지속 데미지 등)
private void OnTriggerStay2D(Collider2D collision)
{
if (collision.CompareTag("Lava"))
{
Debug.Log("용암 지대에서 지속적인 피해를 입고 있습니다.");
}
}
// 3. 이탈 순간 (상점 영역 등)
private void OnTriggerExit2D(Collider2D collision)
{
if (collision.CompareTag("NPC_Zone"))
{
Debug.Log("상점 영역을 벗어났습니다. UI를 닫습니다.");
}
}
}
</style>
오늘은 유니티의 LifeCycle중 Update에서 주로 사용되는 Update,FixedUpdate의 차이와 Trigger에 대한 내용을 배워보았습니다.
Trigger에 대해서는 게임에서 정말 자주 보이는 예시인만큼 직접 구현해보았을 때의 이해도 잘 되었고 앞으로 게임 기획에 있어 어떻게 활용해야할지 이해할 수 있었습니다.