Ontrigger 메서드는 Unity C# MonoBehaviour 메서드 중 하나로 주로 물리적인 상호작용과 관련된 작업을 처리하여 이벤트를 발생시킬 수 있는 콜백 함수입니다.
준비
Collider 컴포넌트 (충돌될 오브젝트 둘중 하나만 isTrigger 체크는 한쪽만 켜져 있어도 가능합니다.)
RigidBody 컴포넌트 : 물리처리를 하기위한 필수 컴포넌트
OnTriggerEnter
설명
오브젝트끼리 첫 충돌을 감지 했을때 한번 작동됩니다.
TIP )
이후에 작동시키기 위해서는 OntriggerExit 메서드가 호출되고 나서 재충돌 시 작동됩니다.
사용법
private void OnTriggerEnter(Collider other)
{
if(other.CompareTag("A"))
{
// "A" 라는 태그를 가진 오브젝트가 첫 충돌시 이벤트 작동
}
}
OnTriggerStay
설명
오브젝트끼리 첫 충돌을 감지하고 나서 충돌이 지속된다면 Frame 단위로 계속 작동됩니다.
단, OntriggerEnter에서 같은 이벤트를 처리했을 시 OnTriggerStay에서는 같은 이벤트 처리를 중복해서 실행시킬 필요 없습니다.
주의 )
OntriggerStay 메서드는 마냥 무한정 호출되지 않고, 충돌된 오브젝트에 변경된 내용이 없다면 어느 순간 호출을 멈춘다.
사용법
private void OnTriggerStay(Collider other)
{
if(other.CompareTag("A"))
{
// "A" 라는 태그를 가진 오브젝트가 첫 충돌이후 충돌이 지속되는 경우 이벤트 작동
}
}
TIP )
Tag 문자열을 비교해서 조건을 체크할 때는 CompareTag()를 사용하자!
다른 비교문은 (other.tag == "A" //) 호출될때마다 가비지 컬렉터가 쌓이게 되어 부하를 줄 수 있다.
OnTriggerExit
설명
오브젝트끼리 충돌을 하고 해제되는 순간에 한번 작동됩니다.
TIP )
충돌해제된 오브젝트를 체크하고싶을때에는 OntriggerEnter에서 사용한 조건문과 동일하게 조건을 걸어 충돌해제되었는지 체크합니다.
사용법
private void OnTriggerExit(Collider other)
{
if(other.CompareTag("A"))
{
// "A" 라는 태그를 가진 오브젝트가 충돌해제 된 경우 이벤트 작동
}
}