[유니티] Unity Colider

안녕하세요 UnityBeginner입니다.
유니티의 콜라이더에 대해 알아보겠습니다.

콜라이더는 물리적 충돌을 제어하기위한 영역을 제공합니다.

충돌을 체크하는 이유로 게임의 한 예시를 든다면 적의 공격을 받았을때 내려치고있는 검의 충돌 영역과 아군 캐릭터의 충돌 영역선이 만나게 되었을때 충돌이 일어난 오브젝트(적의 검) 확인이 가능하며 그로인해 데미지 측정, 체력감소 등 충돌에 대한 결과들을 구현할 수 있게됩니다.



이번엔 콜라이더에 다양한 형태에 대해 알아보겠습니다.

※ 초록색의 선이 콜라이더입니다.


Box Collider



박스형태의 Collider입니다.


Sphere Collider



구형태의 Collider입니다.


Capsule Collider



캡슐모양의 Collider 입니다.


씬뷰

우선 다양한 형태의 오브젝트들을 생성하고 리지드바디를 적용해줍니다.

흰색구를 플레이어로 정하고 이동 스크립트를 적용시켜줍니다.  인스펙터 상단에 tag를 선택하고 Add tag를 통해 Cube, Sphere, Capsule tag를 추가한 뒤 각 오브젝트에 해당하는 tag들을 선택해줍니다.

이제 충돌을 각각의 오브젝트들이 충돌을 감지했을 때의 동작방식을 스크립트로 작성해줍니다.


스크립트 - OnCollision


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
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 +  "오브젝트와 충돌이 끝났을때 호출됩니다.");
        }
    }

충돌된 오브젝트는 collision을 통하여 제어할 수 있고 여러 충돌중에 원하는 충돌대상에 대한 정보를 얻기위해선 if 문을 활용하여 tag가 일치하는 충돌체에 대한 정보를 가져와서 다양한 구현을 진행 할 수 있습니다.


OnCollisionEnter

Collider가 존재하는 2개의 오브젝트가 충돌할 때 호출합니다.


OnCollisionStay

Collider가 존재하는 2개의 오브젝트가 충돌중일때 계속 호출합니다.


OncollisionExit

Collider가 존재하는 2개의 오브젝트가 충돌에서 벗어날 때 호출합니다.


결과화면



댓글