상세 컨텐츠

본문 제목

유니티 충돌 : 콜라이더, 그리고 트리거의 태그 접근

UNITY C#

by 오픈플레이 2019. 6. 22. 13:23

본문

흔히 보는 박스 콜라이더.

콜라이더 Collider트리거 Trigger는 모두 물체의 충돌을 감지하는 기능입니다.

벽과 문처럼 콜라이더가 적용된 물체는 어떠한 것과 통과할 수 없고, 적외선 감지기처럼 (또는 유령이라던가) 트리거가 적용된 물체는 모든 물체를 통과할 수 있지요.

기본적으로 이들을 감지하는데에는 태그 Tag가 필요합니다. 경우에 따라 서로 반응하지 못하게 하려면 레이어 Layer 처리를 해주면 되고요.

Project Settings / Physics 에서 레이어간 간섭을 조정할 수 있습니다.

앞서 말씀드렸다시피 콜라이더와 트리거의 감지는 태그를 통해서 일어난다고는 하지만, 태그를 구별하는 데 사용하는 함수가 서로 다릅니다. 아마 콜라이더와 트리거 혼용 시 일어나는 문제 발생을 막기 위함으로 생각됩니다.

 

1. 콜라이더 사용

void OnCollisionEnter (Collision collision)
{
    if(collision.collider.CompareTag("wall_spike"))
    {
	Debug.Log ("Player get hit spike damage");
        Debug.Log (collision.gameObject);
    }
}

 

2. 트리거 사용

void OnTriggerEnter (Collider other)
{
    if (other.tag == "fireTrap")
    {
	Debug.Log ("Player get hit Fire Damage.");
        Debug.Log (other.gameObject);
    }
}

 

우선 파라미터에 쓰인 변수가 다른 것을 볼 수 있습니다.

컬리전 Collision은 Collision 변수를 썼고, 트리거 Trigger는 Collider 변수를 쓴 차이점이 보입니다.

콜라이더가 적용된 오브젝트의 태그를 읽어 들일 때 Collision.collider를 써서 이 물체가 콜라이더를 썼다는 것을 다시 한번 강조합니다. 그다음에 태그를 읽어 들이는 함수는 .compareTag를 쓰죠.

그러나 트리거의 경우 콜라이더 보다 간단합니다. 단지 변수다음에 .tag를 쓰면 끝입니다.

 

감사합니다.

관련글 더보기

댓글 영역