콜라이더 Collider와 트리거 Trigger는 모두 물체의 충돌을 감지하는 기능입니다.
벽과 문처럼 콜라이더가 적용된 물체는 어떠한 것과 통과할 수 없고, 적외선 감지기처럼 (또는 유령이라던가) 트리거가 적용된 물체는 모든 물체를 통과할 수 있지요.
기본적으로 이들을 감지하는데에는 태그 Tag가 필요합니다. 경우에 따라 서로 반응하지 못하게 하려면 레이어 Layer 처리를 해주면 되고요.
앞서 말씀드렸다시피 콜라이더와 트리거의 감지는 태그를 통해서 일어난다고는 하지만, 태그를 구별하는 데 사용하는 함수가 서로 다릅니다. 아마 콜라이더와 트리거 혼용 시 일어나는 문제 발생을 막기 위함으로 생각됩니다.
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를 쓰면 끝입니다.
감사합니다.
무기 전환하기 (0) | 2020.09.28 |
---|---|
액션게임에서 근접무기로 때리는 방법 (0) | 2020.09.22 |
유니티 변수의 여러가지 활용 (0) | 2019.07.27 |
유니티 Ui : 현재 게임오브젝트 가져오기 (0) | 2019.07.06 |
유니티 3D 오브젝트의 이동 방식 (0) | 2019.06.15 |
댓글 영역