Unity/Unity 3D

[Unity 3D] Collider, Triger에 대해서 알아보고 사용해보자

tangent0426 2024. 8. 6. 17:30
728x90
반응형

저번 시간에는 Unity안에서의 중력을 구현할 수 있는 기능인 Rigidbody에 대해서 알아보았다면 이번에는 충돌의 기능이 있는 Collider에 대해서 알아보고자 합니다.

Rigidbody에 대해 알고 싶으신 분은 아래 링크에 들어가 주시면 감사하겠습니다.

 

 

[Unity 3D]물리엔진 Rigidbody에 대해서 알아보고 사용해보자

우리가 흔히 물체를 끌어당기는 힘을 중력이라고 하죠 그럼 Unity을 통해 만든 게임들은 무엇으로 중력을 잡아주는 게임들이 존재할까요? 오늘은 이러한 중력의 영향을 받는 기능을 잡아주는 물

tangent0426.tistory.com

 

Collider 개요

 

사전적인 의미로 충돌을 의미하며 충돌, 접촉에 대한 모든 걸 관리합니다. Collider는 UnityEngine 클래스에 포함되어 있습니다.

 

 

물체 충돌 처리를 위한 Object의 형태를 정의하며, 실제 화면에서는 보이지 않습니다. 또한 물리충돌을 감지하는 센서 역할을 합니다.

 

 

Rigid body와 Collider의 관계를 살펴보자면 Rigid Body는 물리 동작을 가능하게 해 주며, Collider은 Object가 물리적으로 일어난 충돌을 감지해 줍니다.

 

Collision(콜리전)의 개요를 보자면 앞서 위에 언급했듯 사전적인 뜻으로 “충돌”이라는 뜻을 가지며 실제로 물리적 충돌을 감지하여 충돌을 처리합니다. Unity 내에서는 생성한 Object에 Collision을 추가하면 서로 면이 맞닿음을 감지하고, 어떤 물체와 부딪혔는지 파악 가능합니다.

 

 

가장 간단한 콜라이더로 Box, sphere, capsule 등이 이에 속하고 있습니다. 또한 프로젝트 실행 중에는 부하를 가장 적게 주는 장점을 가지고 있습니다.

 

 

Box Collider는 박스 모양의 콜라이더로 서랍장, 상자 등 박스형 Object에 사용하기 좋으며, 가장 많이 사용하는 콜라이더입니다.

 

 

Collider의 기능에 대해서는 아래의 표에 기재했습니다.

Is Trigger 트리거 사용 여부 (체크 시 물리적인 충돌이 발생하지 않음)
Material 콜라이더에 사용되는 재질을 나타냄
Center 콜라이더 중심
Size 콜라이더 크기

 

 

 

Sphere Collider는 원형 모양의 콜라이더로 콜라이더의 연산 속도가 가장 빠르며, 공, 대포 등 구형 모양에 많이 사용됩니다.

 

 

Is Trigger 트리거 사용 여부 (체크 시 물리적인 충돌이 발생하지 않음)
Material 콜라이더에 사용되는 재질을 나타냄
Center 콜라이더 중심 
Radius 콜라이더 반지름

 

 

Capsule Collider는 캡슐 모양 콜라이더로 캐릭터에 주로 사용됩니다.

 

 

Is Trigger 트리거 사용 여부 (체크 시 물리적인 충돌이 발생하지 않음)
Material 콜라이더에 사용되는 재질을 나타냄
Center 콜라이더 중심
Radius 콜라이더 반지름
Height 캡슐의 높이
Direction 캡슐의 방향

 

0

 

Edit Collider은 위의 슬라이드처럼 마우스로 쉽게 콜라이더 크기 조절 가능하며 Box, Sphere, Capsule 공통으로 있는 기능입니다.

 

 

Mesh collider(매쉬 콜라이더)에서 Mesh는 그물, 망사라는 뜻을 가지며 정밀하게 충돌을 감지하는 경우에 사용됩니다. 또한 메쉬의 형태가 복잡할수록 콜라이더의 연산 시간이 오래 걸리고, 특정 상황 말고는 사용하지 않는 것이 좋습니다. 

 

물리 머터리얼(Physic Material)은 오브젝트의 마찰 또는 탄성 효과를 조정하는 데 사용하며 물리엔진에 반응하는 방식에 영향을 줍니다. (예시로 공이 튀기는 현상이나 얼음에서 미끄러지는 현상이 있습니다.)

Dynamic Friction
이미 움직이고 있을 때 사용되는 마찰
Static Friction Object가 표면 위에 가만히 놓여 있을 때 사용되는 마찰
Bounciness 표면에 얼마나 탄성이 있는지 나타냄
Friction Combine 충돌하는 두 Object의 마찰이 합쳐지는 방법 
Bounce Combine 충돌하는 두 Object의 탄성이 합쳐지는 방법

 

 

앞서 Tag에 대한 설명을 간단하게 설명해 준 적이 있는데 더 정확하게 설명하자면 Game Object에 할당할 수 있는 별명(단어)과 Game Object를 식별할 때 도움을 주며 여러 Object에 같은 코드를 사용할 때 시간 절약 할 수 있습니다. 또한 주로 상호작용 해야 하는 두 Object를 판단하는 데 사용합니다.

 

이러한 Tag와 Layer 차이점으로는 아래의 표와 같이

Tag Layer 
  • 각 Game Objet를 식별하는 용도 
  • 코드내에서 식별하는데 사용 
  • 단일 Game Object를 관리함
  • 대표적 사용 예시: 충돌 처리 식별
  • 오브젝트들의 그룹을 만들고 관리하는 용도
  • 카메라를 이용하여 렌더링을 하는데 이용
  • 빛의 영향을 받는지 설정 가능 
  • 대표적 사용 예시: 컬링 마스크

 

 

Tag 추가하는 방법을 간단하게 추가하는 방법은 Tag 클릭 -> Add Tag 클릭 -> + 버튼 크릭 -> New Tag Name에 원하는 이름 작성 후 Save 클릭하면 간단하게 태그를 추가할 수 있습니다.

추가된 태그들

 

 

Triger가 뭔지 설명하자면 어느 특정한 동작에 반응해 자동으로 동작을 실행하는 것을 뜻하며, 물리적 연산을 하지 않고 충돌을 감지할 수 있습니다. 또한 Game Object가 접촉 시 서로 통과하며, Collider의 Is Trigger 항목을 체크해야 사용할 수 있습니다.

 

Triger사용해 보면범위 내에 들어갔는가를 판단하고 싶을 때 사용하며, 충돌할 두 Object 중 최소 하나 이상은 Trigger, RigidBody가 켜져 있어야 합니다. 또한 두 Object 모두 Collider가 있어야합니다.

 

 

Triger, Collider 사용해 보기

Triger, Collider를 이용하여 특정 object 통과 시 console창에 “충돌” 출력과 Physic Material(물리 머터리얼)을 이용해서 Triger, Collider을 구현해 보는 시간을 가져보도록 하겠습니다.

 

우선 저번시간에 Rigidbody에서 만들어두었던 두 개의 Object를 준비해 줍니다. 

 

움직일 Object에 코드를 생성해 붙여줍니다.

[SerializeField]
    private float speed = 5f;
    private Rigidbody rb;
    void Start()
    {
        rb = GetComponent<Rigidbody>();
    }
    void FixedUpdate()
    {
        float x = Input.GetAxis("Horizontal");
        float z = Input.GetAxis("Vertical");
        Vector3 move = new Vector3(x, 0, z);
        rb.velocity = move * speed;
    }

 

특정 Object에 출동 시 Consol창에 "충돌"이라고 나올 코드를 적용해 줍니다.

void OnTriggerEnter(Collider other)
    {
        if (other.CompareTag("Wall"))
        {
            Debug.Log("충돌");
        }
    }

 

0

위의 슬라이드처럼 특정 object 통과 시 console창에 “충돌”출력이 되는 것을 볼 수 있습니다.

더보기
충돌하는 두 Object 모두 IsTrigger가 해제 되어 있어야함
 
Rigidbody있어야함
 
충돌대상 ObjectRigidBody를 가지고 있어야함
 
둘중 하나는 IsKinematic이 해제 되어 있어야함

 

이번에는 Physic Material(물리 머터리얼)을 이용해서 마찰력을 내는 Object를 만들어 보겠습니다.

 

 

Project창에서 우클릭한 후 Create 클릭 후 Phtsic Material 클릭해 줍니다.

 

 

위의 Physic Material(물리 머터리얼) 개요를 참고해서 설정을 해줍니다.

 

0

 

설정된 물리 머터리얼을 Collider의 Material에 드래그해 줍니다.

 

0

이제 Physic Material(물리 머터리얼)을 이용하여 Object에 설정된  마찰력이 나오는 물리 현상을 볼 수 있습니다.

 

추가 도전문제) trigger이랑 collider을 이용하여 Cube 색깔 바꾸기

0

 

간단한 Collider를 알려드린 것 같아 위 슬라이드처럼 여러분들이 Player과 Cube 충돌 시 Cube의 색깔이 바 Trigger 버전이랑 Collider 버전 2가지 다 만들어 보는 방법을 만들어 보시기 바랍니다.(색깔 변경코드는 wallRenderer.material.color 코드를 이용해 변경해 보시기 바랍니다.)

 

 

trigger, Collider에 대해서 간단하게 설명해 드렸습니다. 자세한 부분은 아래 링크를 참조해 주시면 감사하겠습니다.

 

 

콜라이더 - Unity 매뉴얼

콜라이더(Collider) 컴포넌트는 물리 충돌 처리를 위한 오브젝트의 형태를 정의합니다. 콜라이더는 보이지 않는 요소이므로 오브젝트의 메시와 정확히 동일한 모양일 필요는 없으며, 실제로는 게

docs.unity3d.com

 

읽어주셔서 감사합니다.^^

반응형