Collider: 기본 개념

  1. Collider란 무엇인가?

    • Collider는 Unity에서 물리적인 객체의 모양(Shape)을 정의하는 컴포넌트입니다. 충돌 감지에 사용되지만, 물리적 반응(예: 튕김, 밀림)을 스스로 처리하지는 않습니다.
  2. 충돌 감지(Collision Detection):

    • Collider는 객체가 다른 객체와 충돌하거나 상호작용하는지 감지합니다.
    • 그러나 Collider만으로는 물리적 반응(예: 충돌 후 튕겨 나감, 멈춤 등)이 일어나지 않으며, 물리 엔진을 활용하려면 Rigidbody가 추가로 필요합니다.
  3. Collider만 추가했을 때 객체가 관통하는 이유:

    • Collider만 붙이면 충돌이 논리적으로 인식되지만, 물리적인 반응은 일어나지 않습니다. Rigidbody가 없으면 충돌 후 물리적인 처리가 되지 않으므로 객체가 그냥 통과하게 됩니다.

Rigidbody: 물리 엔진 활성화

  • 물리 엔진이 적용이 되어 있지 않음
  1. Rigidbody란 무엇인가?

    • Rigidbody는 Unity의 물리 엔진이 객체에 영향을 미칠 수 있도록 해주는 컴포넌트입니다. 중력, 힘, 충돌 같은 물리적 상호작용이 가능해집니다.
  2. Collider와 함께 사용하는 이유:

    • Collider가 없다면, Rigidbody는 객체의 충돌 모양이나 경계를 알 수 없어서 물리적으로 충돌을 처리할 수 없습니다.
    • 반대로 Rigidbody가 없으면 Collider만으로는 물리적 반응 없이 충돌을 단순히 "감지"만 합니다.

  1. Rigidbody 주요 설정:
    • Mass (질량): 객체가 물리 연산에서 얼마나 무겁게 느껴지는지를 결정합니다.
    • Drag (저항): 객체의 이동 속도가 얼마나 빨리 줄어드는지를 제어합니다.
    • Angular Drag (회전 저항): 회전 속도가 줄어드는 정도를 제어합니다.
    • Use Gravity (중력 사용): 객체가 중력의 영향을 받을지 여부를 설정합니다.
    • Is Kinematic (키네마틱): 활성화하면 Rigidbody가 물리적 힘을 무시하고 스크립트를 통해서만 움직입니다.
    • Collision Detection (충돌 감지): 충돌 감지 방식을 설정합니다. (예: Discrete, Continuous 등)

성능 최적화를 위한 단순한 Collider 사용

  1. 왜 단순한 Collider를 사용하는가?

    • 3D 모델의 Mesh는 수많은 삼각형(폴리곤)으로 이루어져 있습니다. 이 기준으로 충돌을 계산하면 연산량이 매우 커져서 성능 문제가 발생합니다.
    • 이를 해결하기 위해 Box Collider, Sphere Collider, Capsule Collider 같은 단순한 형태를 사용하여 충돌 영역을 설정합니다. 이런 단순화로 물리 연산 성능을 크게 향상시킬 수 있습니다.
  2. Capsule Collider 예시 (이미지 참고):

    • Center (중심): 캡슐의 중심 위치를 객체의 로컬 공간에서 지정합니다.
    • Radius (반지름)와 Height (높이): 캡슐의 크기를 정의합니다. 이 값이 충돌 경계를 결정합니다.
    • Direction (방향): 캡슐이 확장되는 축을 설정합니다. (예: Y축, Z축 등)
  3. Mesh Collider의 사용 사례:

    • 불규칙한 모양의 객체처럼 정밀한 충돌 감지가 필요한 경우에만 사용합니다.
    • Mesh Collider는 정적 객체(Static)에 적합하며, 동적 객체(Dynamic)에 사용하면 성능 문제가 발생할 수 있습니다.

Collider의 실제 활용

  1. 간단한 객체에 단일 Collider 사용:

    • 바렐(Barrel), 공, 상자 같은 객체는 일반적으로 Box ColliderSphere Collider를 하나만 사용합니다.
  2. 복잡한 객체에 다중 Collider 사용:

    • FPS 게임 캐릭터 같은 경우, 신체 부위마다 충돌 처리를 다르게 하기 위해 머리, 팔, 다리 등 각 부위에 개별 Collider를 추가합니다.
  3. Trigger Collider:

    • Collider를 "Is Trigger"로 설정하면 물리적 충돌은 발생하지 않지만, 객체가 영역에 진입, 나감, 체류하는 이벤트를 감지할 수 있습니다. (예: 체크포인트, 센서, 아이템 수집 등)

Collider + Rigidbody의 상호작용

  1. 효율적인 충돌 처리를 위한 규칙:

    • 충돌에 관여하는 객체 중 최소 하나는 Rigidbody를 가지고 있어야 물리적 충돌 처리가 가능합니다.
    • 충돌하는 모든 객체는 Collider를 가지고 있어야 물리적 경계를 정의할 수 있습니다.
  2. 동적(Dynamic) vs 정적(Static) Collider:

    • 동적 Collider: Collider와 Rigidbody를 모두 가진 객체로, 힘과 물리적 상호작용에 반응합니다.
    • 정적 Collider: Collider만 가진 객체로, 충돌 경계를 정의하지만 물리적 상호작용에는 반응하지 않습니다. (예: 벽, 바닥)


실제 예시 및 관찰

  1. Rigidbody 없이 Collider만 사용:

    • 충돌은 감지되지만, 물리적 반응(예: 튕김, 멈춤)은 일어나지 않습니다.
  2. Collider 없이 Rigidbody만 사용:

    • 객체는 중력과 물리적 힘에 반응하지만, 충돌 처리가 불가능합니다.
  3. 효율적인 설정 방법:

    • 단순한 객체에는 단순화된 Collider를 사용합니다.
    • Trigger는 논리적 충돌 처리가 필요한 경우에 사용합니다.
    • Rigidbody는 꼭 필요한 경우에만 추가하여 불필요한 물리 연산을 줄입니다.

profile
李家네_공부방

0개의 댓글