유니티 프로그램

[유니티] UNITY Box Collider를 켜고, 끄는 코딩방법은 뭔가요?

비도르 2022. 7. 19. 12:35

[유니티] UNITY Box Collider를 켜고, 끄는 코딩방법은 뭔가요?

 

안녕하세요. 오늘도 평화롭게 안개가 끼는 2022년 여름입니다.

Box Collider를 Inspector 창에서 체크를 하거나 해제해서 끄거나 켤수 있습니다.
하지만, 유니티로 안드로이드 어플리케이션을 만들때 오브젝트의 Box Collider 를 이동할 때만 잠시 끄고, 정지할 때 켜야 하는 상황에서는 코딩으로 처리할 수 밖에 없습니다. 다른 분들도 저와 비슷한 경험을 하신 분들이 있을 것 같습니다.

How??? 어떻게 하는지 알아보겠습니다.

 

 

Box Collider를 끌때

gameObject.GetComponent<BoxCollider>().enabled = true;

Box Collider를 켤때

gameObject.GetComponent<BoxCollider>().enabled = false;

 

간단하죠? ^^

그럼 오늘도 즐유~

 

[예시]=============================================

기본 시작

기본적인 시작은 Plane을 바닥에 깔고 사각 기둥과 큐브를 만들어서 위 그림처럼 두고,

위에 큐브에만 Rigidbody를 생성했습니다. 

다들 아시겠지만,

충돌을 감지하기 위해서는 양쪽의 게임오브젝트 모두 콜라이더 컴포넌트가 있어야 하고,

충돌감지를 인식하려는 게임오브젝트에는 리지드바디(Rigidbody) 컴포넌트를 추가해야 합니다.

충돌

그리고 실행시키면 위 그림처럼 큐브가 아래로 떨어지면서 기둥과 부딪쳐 멈추게 됩니다.

충돌 스크립트

이때 충돌 여부를 알기 위해서 큐브에 Script를 생성해서 충돌시에 상대 게임오브젝트의

이름을 아래와 같이 출력하도록 했습니다.

충돌시 Log

참고==============================================

OnCollisionEnter : 양쪽 게임오브젝트가 충돌이 일어날 경우 호출

OnCollisionStay : 양쪽 게임오브젝트가 충돌이 지속될 경우 호출

OnCollisionExit : 양쪽 게임오브젝트가 충돌이 끝난 경우 호출

=================================================

 

그럼! 실제로 동작여부를 확인하기 위해서 Script를 아래와같이 수정했습니다.

큐브가 아래 기둥과 충돌시에 큐브의 BoxCollider 를 Disable 되도록 했습니다.

수정된 script

그리고 나서 실행해보면 Box Collider 가 Disable되면서 아래 그림처럼

큐브의 BoxCollider 기능이 없어져서 큐브가 아래로 떨어지는 것을 확인할 수 있습니다..

Box Collider Disable시

*********************************************************************************

참고)

충돌감지만 하고 싶을 경우에는 Is Trigger 를 체크해 주어야 합니다.

Box Collider

이때 충돌감지를 위해서는 아래와 같이 Script를 변경해야 됩니다.

스크립트

참고==============================================

OnTriggerEnter : 양쪽 게임오브젝트가 충돌이 일어날 경우 호출

OnTriggerStay : 양쪽 게임오브젝트가 충돌이 지속될 경우 호출

OnTriggerExit : 양쪽 게임오브젝트가 충돌이 끝난 경우 호출

=================================================

**********************************************************************************************