📖 학습 목표

  • 유니티의 물리엔진에 대해 배웁니다.
  • Collider와 Rigidbody의 개념을 배웁니다.

 

 

 

📒 과정

0. Scene 열기

  • 프로젝트 폴더 내 Scenes폴더 안에 있는 "2. Physics(Collider, Rigidbody)"을 엽니다.

 

 

 

1. 물리엔진

유니티의 물리 엔진은 게임 오브젝트의 동작을 현실 세계의 물리 법칙에 기반하여 시뮬레이션하는 역할을 합니다. 이를 통해 게임에서 오브젝트들이 중력, 운동, 충돌, 회전 등과 같은 현실적인 동작을 보여줄 수 있습니다.
  • 유니티에서 물리엔진을 활용하여 물리적인 처리를 구현하기 위해서는 두 가지의 컴포넌트를 사용합니다.
  • Rigidbody와 Collider을 함께 사용하여 물리처리를 구현합니다.

프로젝트 "2. Physics"씬에 있는 물리 예시

 

 

 

2. Collider

콜라이더 컴포넌트는 물리 시뮬레이션에서 충돌을 감지하는 역할을 합니다.
각각의 게임 오브젝트에 콜라이더 컴포넌트를 추가하여 해당 오브젝트의 형태와 충돌 판정을 정의할 수 있습니다.
콜라이더는 오브젝트의 경계를 나타내는데, 이를 통해 물리 엔진은 충돌을 감지하고 처리합니다.

 

같은 콜라이더이지만, 다른 모습

  • 콜라이더는 여러개의 타입을 가지며, 그 타입은 모양에 따라 다릅니다.
  • 다른 모양이더라도 콜라이더를 설정하는 컴포넌트는 형태를 설정하는 속성을 제외하고 나머지 속성은 동일합니다.

 

  • 각 형태의 고유한 성질에 따라 속성이 다르지만, 그것을 제외한 나머지 설정은 동일합니다.

 

 

 

· Is Trigger 옵션 

  • 트리거 옵션을 활성화하면 콜라이더가 실제 충돌을 발생시키지 않고, 충돌을 감지하는 용도로만 사용됩니다.
  • 트리거 콜라이더는 충돌 이벤트만 발생시키며, 다른 오브젝트와의 충돌 판정(물리적인 효과)을 수행하지 않습니다.
  • Is Trigger 옵션을 켜면, 주로 스크립트에서 이를 제어합니다.
  • Is Trigger 옵션은 기본적으로 Off 상태입니다.

Is Trigger 켬(왼쪽) / Is Trigger 끔(오른쪽)

 

 

 

3. Rigidbody

리지드바디 컴포넌트는 유니티의 물리 엔진에서 가장 기본적이고 중요한 컴포넌트입니다.
이 컴포넌트를 게임 오브젝트에 추가하면 해당 오브젝트는 물리 시뮬레이션의 영향을 받습니다.

 

리지드바디 컴포넌트

 

  • 일반적으로 리지드바디는 자연스럽게 실제로 움직이는 대상에게 사용합니다. 예시로 위 이미지에서 축구공에만 리지드바디 컴포넌트가 사용됩니다.
  • 리지드바디는 질량, 중력, 운동, 회전 등의 물리적 속성을 조절하는 데 사용됩니다.
  • 오브젝트에 힘을 가하거나 힘을 받을 때, 리지드바디는 이러한 힘을 계산하여 오브젝트의 운동을 시뮬레이션합니다.

 

 

 

· Use Gravity 옵션 

리지드바디(Rigidbody)의 "Use Gravity" 옵션은 해당 오브젝트에 중력을 적용할지 여부를 결정하는 속성입니다.

 

  • "Use Gravity" 옵션이 활성화된 경우

    리지드바디 컴포넌트의 "Use Gravity" 속성이 체크되어 있는 경우, 해당 오브젝트에 중력이 적용됩니다.
    중력은 오브젝트에 아래 방향으로 작용하여 오브젝트를 아래로 끌어당깁니다.
    이로 인해 리지드바디가 있는 오브젝트는 중력에 따라 아래로 떨어지거나 떨어지는 동작을 수행합니다.
    이 옵션은 대부분의 상황에서 기본적으로 활성화되어 있습니다.

 

  • "Use Gravity" 옵션이 비활성화된 경우

    리지드바디 컴포넌트의 "Use Gravity" 속성이 체크되어 있지 않은 경우, 해당 오브젝트에 중력이 적용되지 않습니다.
    오브젝트는 중력에 영향을 받지 않고 위치가 일정하게 유지됩니다.
    이 경우에는 오브젝트에 다른 힘을 가하거나 리지드바디의 속도를 조절하여 움직임을 구현해야 합니다.

Use Gravity On(왼쪽) / Use Gravity Off(오른쪽)

 

 

 

4. 차이점

유니티에서 리지드바디(Rigidbody)와 콜라이더(Collider)는 물리 시뮬레이션에서 서로 다른 역할을 수행하는 두 가지 컴포넌트입니다.

 

콜라이더(Collider)

  • 콜라이더는 물리 시뮬레이션에서 충돌을 감지하는 역할을 합니다.
  • 각각의 게임 오브젝트에 콜라이더 컴포넌트를 추가하여 해당 오브젝트의 형태와 충돌 판정을 정의할 수 있습니다.
  • 콜라이더는 오브젝트의 경계를 나타내는데, 이를 통해 물리 엔진은 충돌을 감지합니다.
  • 콜라이더는 충돌체의 형태와 충돌 판정을 제어하는 데 사용되며, 오브젝트 간의 상호작용을 정확하게 처리할 수 있도록 도와줍니다.
  • 콜라이더는 실제 충돌이 발생하는 것이 아니라, 충돌 감지 이벤트를 트리거하거나 충돌 정보를 제공하는 역할을 합니다.

리지드바디(Rigidbody)

  • 리지드바디는 유니티의 물리 엔진에서 게임 오브젝트에 물리적 특성을 부여하는 역할을 합니다.
  • 리지드바디 컴포넌트를 게임 오브젝트에 추가하면 해당 오브젝트는 중력, 운동, 회전 등의 물리 시뮬레이션 영향을 받게 됩니다.
  • 리지드바디는 오브젝트의 질량, 속도, 회전 등을 조절할 수 있어 물리적인 동작을 제어할 수 있습니다.
  • 오브젝트에 힘을 가하거나 힘을 받을 때, 리지드바디는 이러한 힘을 계산하여 오브젝트의 운동을 시뮬레이션합니다.

 

요약하자면, 리지드바디는 게임 오브젝트의 물리적인 동작을 제어하고 시뮬레이션하는 데 사용되는 반면, 콜라이더는 충돌을 감지하고 판정하는 역할을 합니다. 리지드바디는 물리적 특성과 운동을 다루는 반면, 콜라이더는 오브젝트의 형태와 충돌 판정을 다룹니다. 두 컴포넌트는 함께 사용되어 게임 오브젝트의 현실적인 동작과 상호작용을 구현하는 데 필수적입니다.

 

 

 

❔ 번외 

1. Mesh Collider

가장 왼쪽에 있는 복잡한 모형이 Mesh Collider를 사용

유니티의 Mesh Collider는 게임 오브젝트의 복잡한 형태와 충돌 판정을 다루기 위해 사용되는 콜라이더(Collider)의 한 종류입니다. Mesh Collider는 오브젝트의 메쉬(Mesh) 형태에 따라 충돌을 감지하고 판정합니다.

1. 메쉬(Mesh)

  • 메쉬는 3D 모델의 구성 요소로, 오브젝트의 형태와 구조를 정의하는데 사용됩니다.
  • 메쉬는 일반적으로 정점(Vertex), 삼각형(Triangle) 등으로 이루어진 네트워크 구조를 가지며, 게임 오브젝트의 모양과 표면을 표현합니다.

2. Mesh Collider

  •  Mesh Collider는 게임 오브젝트의 메쉬와 동일한 형태를 가지는 충돌 영역을 정의합니다.
  • Mesh Collider는 복잡한 형태의 오브젝트에 정확한 충돌 판정을 제공하기 위해 사용됩니다.
  • 메쉬의 각 정점과 삼각형을 기반으로 충돌 영역을 계산하므로, 메쉬의 형태와 충돌 영역이 일치하여 정확한 충돌 판정이 가능합니다.

3. 사용 이유

  • Mesh Collider는 다른 기본 콜라이더 타입(Box Collider, Sphere Collider 등)으로는 정확한 충돌 판정을 수행하기 어려운 복잡한 형태의 오브젝트에 적합합니다.
  • 예를 들어, 세밀한 모양의 돌, 건물, 캐릭터의 메쉬 등과 같은 경우에 Mesh Collider를 사용하여 충돌 판정을 구현할 수 있습니다.
  • Mesh Collider는 충돌 감지와 물리 시뮬레이션에 더 정밀한 제어를 제공하여 게임의 현실적인 동작을 구현하는 데 도움을 줍니다.

4. 단점

  • Mesh Collider는 다른 기본 콜라이더보다 계산 비용이 높을 수 있으므로, 복잡한 메쉬를 가진 오브젝트에 대해 과도한 사용은 성능 저하를 초래할 수 있습니다.
  • 따라서, 정확한 충돌 판정이 필요한 부분에만 Mesh Collider를 사용하는 것이 권장됩니다.

Mesh Collider는 게임 오브젝트의 복잡한 형태와 충돌 판정을 정확하게 다룰 수 있는 유용한 도구입니다. 그러나 성능에 영향을 미칠 수 있으므로 적절하게 사용해야 합니다.

 

 

 

📋 학습 완료

  • 유니티의 물리엔진에대해 간단히 다뤘습니다.
  • Collider이 무엇인지 알고 여러 형태가 있다는 것을 알았습니다.
  • Rigidbody가 무엇인지 알고 어떤 역할을 수행하는지 알았습니다.
  • MeshCollider에 대해 다뤘습니다.

'unity etc. > lecture' 카테고리의 다른 글

[유니티] 카메라(Main Camera)  (0) 2023.06.19
[유니티] 광원(Light)  (0) 2023.06.19
[유니티] 에셋 스토어(Asset Store)  (0) 2023.06.19
[유니티] 프리팹(Prefab)  (0) 2023.06.19
[유니티] 터레인(Terrain)  (0) 2023.06.19
bonnate