유니티 충돌을 감지하는 초록선

2020. 4. 20. 12:23유니티실습

반응형

안녕하세요 유니터 비기너입니다.

이번 글에선 오브젝트 간의 충돌을 발생했을 때 충돌 여부를 판정받기 위해서 꼭 필요한

collider에 대해서 알아보겠습니다.

 

가장 기본적으로 충돌을 체크하는 이유는 게임을 예시로 들어보겠습니다.

적이 플레이어에게 검을 내려쳐 공격할 때 충돌체가 없다면 플레이어는

적에게 맞았다는 사실조차 인지하지 못하게 될 것입니다.

 

하지만 플레어와, 검 각각에 콜라이더를 적용함으로써

서로가 충돌했을 때 충돌했다는 사실을 감지하고

그로 인해 대미지 측정, 체력 감소 등 여러 가지 결과들을 구현이 가능해집니다.

 

 

이제 저희는 콜라이더라는 충돌을 감지하는 컴포넌트에 대해 알게 되었습니다.

그럼 이제 다양한 형태에 콜라이더에 대해 알아보겠습니다.

 

 

박스 형태의 콜라이더

BoxColider

구형태의 콜라이더

SphereCollider

캡슐 형태의 콜라이더

CapsuleCollider

위의 그림과 같이 초록색 선으로 이루어진 부분이 Collider이며 소개한 3개 이외에도 Terria Collider, Wheel Collider, MeshCollider 등 다양한 형태의 콜라이더가 존재하며 모두 충돌을 감지하는 기능이 있다는 사실을 기억해주세요.

 

 

이제 콜라이더에 파악했다면 실습으로 들어가겠습니다.

GameScene View

우선 다양한 형태의 오브젝트들을 생성하고 Rigidbody 컴포넌트를 적용해줍니다.

 

흰색 구를 플레이어로 정하고 이동 스크립트를 작성하여 적용시켜줍니다.

그리고 인스펙터 상단에 태그 > Add Tag를 통해 Cube, Sphere, Capsule을 추가한 뒤 

각 오브젝트 모양에 일치하도록 태그를 변경 흰색 구는 Player 태그로 변경합니다..

 

위의 과정을 마쳤다면 이제 충돌을 감지했을 때의 동작 방식을 스크립트로 작성해줍니다.

public class ColliderManager : MonoBehaviour
{
    private void OnCollisionEnter(Collision collision) {
        if(collision.gameObject.tag == "Player") {
            Debug.Log(transform.name + "오브젝트와" 
                + collision.gameObject.name + "오브젝트가 충돌했습니다.!!");
        }
    }

    private void OnCollisionStay(Collision collision) {
        if (collision.gameObject.tag == "Player") {
            Debug.Log(transform.name + " 오브젝트와 " 
                + collision.gameObject.name + " 오브젝트가 충돌이 유지되는동안 호출됩니다.!!");
        }
    }

    private void OnCollisionExit(Collision collision) {
        if (collision.gameObject.tag == "Player") {
            Debug.Log("" + collision.gameObject.name +  "오브젝트와 충돌이 끝났을때 호출됩니다.");
        }
    }
}
OnCollidersionEnter
Collider가 적용되어있는 2개의 오브젝트가 충돌할 때 호출합니다.
게임 뷰 game view
Collider가 적용되어있는 2개의 오브젝트가 충돌이 지속 중일 때 호출합니다.
프로젝트 뷰 Project view
Collider가 적용되어있는 2개의 오브젝트가 충돌에서 벗어날 때 호출합니다.

 

 

결과화면

결과 화면

※ 동영상이 재생할 수 없을 시 광고차단 프로그램을 비활성화 시켜주세요.

 

위의 결과와 같이 각 오브젝트들이 충돌했을 때 충돌 중일 때 충돌이 끝났을 때 출력되는 메시지를 확인해보았습니다.

 

영상을 마지막으로 콜라이더의 기능, 다양한 형태 그리고 스크립트 구현 및 실습을 마쳤습니다.

이번 글에선 충돌 이벤트가 필요한 오브젝트들에는 콜라이더를 포함시켜 충돌을 감지하고

특정 물체와의 접촉 시 이벤트를 부여할 수 있다는 사실만 이해하셨다면 좋겠습니다.

 

지금까지 읽어주신 분들에게 감사드리고

좀 더 좋은 정보로 다시 뵙겠습니다. 

감사합니다.

 


https://play.google.com/store/apps/details?id=com.NeighborGamer.escape

 

패러디방탈출 캐리비안의해적 - Google Play 앱

※게임방법※ - 주위에 단서들을 획득하세요. - 퀴즈를 풀어 단서를 획득하세요. - 단서를 사용하여 방을 탈출하세요. - 힌트를 사용하여 막혔던 문제를 해결해보세요.

play.google.com

반응형