Unity. Collison과 Trigger로 충돌 처리하기

1 분 소요

🌟 Component 셋팅

충돌 처리를 하고 싶다면 기본적으로 해당 오브젝트에 ColliderRigidbody 컴포넌트를 넣어줘야 한다. Collider는 2D 전용, 사각형, 원형 등등 다양하게 있는데 오브젝트 모양과 속성에 따라 아무거나 사용하면 된다. Rigidbody는 2D인지 아닌지만 확인하면 된다! 물리 효과가 필요하지 않는 오브젝트라면 Collider만, 물리 효과가 필요하다면 둘 다 넣어야 한다. 그냥 게임 속 벽이라면 Collider만 넣어도 됨!! 움직이는 캐릭터라면 Rigidbody까지! 어쨌든 Collider는 필수.

🌟 Collison 함수

void OnCollisionEnter(Collision collision) {
	//충돌 했을 때 사용할 코드 
}
void OnCollisionExit(Collision collisionInfo) {
	//충돌에서 벗어났을 때 사용할 코드
}
void OnCollisionStay(Collision collisionInfo) {
	//충돌하고 있을 때 사용할 코드
}

충돌 처리 함수는 세 가지가 있다. 첫 번째는 충돌했을 때 처음 호출되고, 두 번째는 충돌이 끝났을 때 호출되며, 세 번째는 충돌하고 있을 때 계속 호출된다.

void OnCollisionEnter(Collision collision) {
	if(collision.tag=="Monster") { }
}

보통 충돌 처리가 필요한 오브젝트에 tag를 걸어서 어떤 오브젝트인지 확인한다. layer도 사용하는데 이건 다음에…언젠가…

🌟 Trigger 함수

Collision은 부딪히면 튕기거나 그러는데 게임 NPC처럼 그냥 통과해서 지나가야 하는 경우도 있기 때문에, 물리 효과를 제외한 충돌 감지 함수도 있다. Collider 컴포넌트에서 isTrigger 항목에 체크하면 물리 효과를 뺄 수 있다. 하지만 그러면 충돌 감지 처리는 위 함수가 아닌 Trigger를 사용해야 함!!!

void OnTriggerEnter(Collider other) {
	//충돌 했을 때 사용할 코드 
}
 void OnTriggerExit(Collider other) {
	//충돌에서 벗어났을 때 사용할 코드
}
void OnTriggerStay(Collider other) {
	//충돌하고 있을 때 사용할 코드
}

사용 방법은 Collision 함수와 동일하다. 그런데 Collision과 Trigger 함수 모두 Rigidbody가 non-kinematic이어야 작동한다. 그게 무ㅓ더라?

댓글남기기