유니티(Unity) OnTriggerEnter 함수(콜라이더, isTrigger, 리지드바디)
OnTriggerEnter 함수는 트리거 콜라이더(Trigger Collider)가 다른 콜라이더와 접촉하거나(실제 물리적인 충돌을 일으키지 않고) 영역에 진입할때 호출되는 함수입니다. 적이 플레이어의 공격 범위에 진입한 경우, 플레이어 아이템 획득등
게임 오브젝트가 특정 영역에 진입하거나 접촉할 때 발생해야 하는 이벤트를 처리할 때 사용됩니다.
플레이어가 아이템을 획득
void OnTriggerEnter(Collider other)
{
if (other.CompareTag("Player"))
{
Destroy(gameObject);
}
}
플레이어가 공격 범위의 적을 공격
void OnTriggerEnter(Collider other)
{
if (other.CompareTag("Enemy"))
{
AttackEnemy(other.gameObject);
}
}
OnTriggerEnter 함수 사용 조건
충돌을 일으키는 두 오브젝트 모두 콜라이더 컴포넌트(Collider)를 가지고있어야합니다. 또 두 오브젝트중 적어도 하나는 트리거로 설정되어있어야합니다(콜라이더의 isTrigger가 활성화)
IsTrigger를 활성화하면 해당 콜라이더를 트리거로 설정하며 트리거 볼륨(trigger volume)에 진입하는 다른 게임오브젝트의 리지드 바디에 대해서 충돌(Collision)을 등록하지않아 충돌하지않으며 본인 게임오브젝트의 OnTriggerEnter 함수를 호출합니다.
리지드바디 컴포넌트(Rigidbody)를 가져야합니다. 리지드바디 컴포넌트가있는 게임오브젝트의 콜라이더(Collider) 또는 리지드바디 컴포넌트가있는 게임오브젝트의 자식 오브젝트(child)에 있는 콜라이더는 OnTrigger 이벤트를 생성할 수 있습니다. 오브젝트가 물리반응에서 제외하려면 kinematic에 체크합니다.
다양한 사용 예시
플레이어가 아이템을 획득하는 경우
적이 공격 범위에 들어오면 플레이어가 적을 공격하는 예시
플레이어가 보스 전투 영역에 들어가면 보스 전투를 시작하는 예시
플레이어가 특정 영역에 도달하면 시네마틱 컷을 표시합니다.
플레이어가 특정 지점에 진입하면 문을 여는 애니메이션을 트리거합니다(문이 열리는 예시)
탄환이 적과 충돌했을 때(적의 충돌체에 진입할때) 적에게 피해를 주는 경우.
플레이어가 미션 완료 지점에 도달하면 미션을 완료합니다.
https://docs.unity3d.com/6000.0/Documentation/ScriptReference/Collider.OnTriggerEnter.html
https://docs.unity3d.com/6000.0/Documentation/ScriptReference/Collider-isTrigger.html
'유니티게임개발 > 기초공부' 카테고리의 다른 글
유니티(unity)에서 Time 클래스 사용하기 (0) | 2023.01.21 |
---|---|
유니티(unity)에서 mathf 클래스의 수학함수 사용하기 (0) | 2023.01.21 |
유니티에서 콜라이더 충돌 레이어 관리하기(collision matrix) (0) | 2023.01.21 |
유니티(Unity) 자주 사용하는 이벤트 함수 종류(초기화, 업데이트, 충돌, 기타) (0) | 2023.01.19 |
유니티에서 리지드바디(Rigidbody)의 Sleep, WakeUp, Sleep Threshold (0) | 2023.01.19 |