GameObject에 물리적 동작을 가능하게 해주는 Component이다.
해당 Component가 추가된 GameObject는 Forces에 따라서 반응한다.
가장 큰 차이점은 Force를 사용한다는 것이다. RigidBody는 힘과 토크를 받을 수 있지만 Transform은 그렇지 않다.
주의할 점.
동일한 GameObejct의 RigidBody와 Trandform를 동시에 사용하지 않고, 하나만 조작해야 한다. 두가지 다를 사용하여 연산을 할 경우 문제가 발생할 수 있다.
참조 : https://docs.unity3d.com/kr/2022.2/Manual/rigidbody-physics-section.html
GameObject에게 물리적으로 일어난 충돌을 감지해주는 Component이다.
일종의 센서라고 알고있으면 이해하기 쉽다.
유니티에서 기본적으로 제공하는 Collider가 몇가지 있다.
기본 콜라이더는 가장 간단하며 프로세스에 부하를 가장 적게주는 모양이다.
각각의 모양은 이러하게 생겼다.
- 연산 속도의 순서
Sphere > Capsule > Box
기본 콜라이더 여러개를 합쳐 만든 복합 콜라이더 라는 것도 있다.
복합콜라이더를 사용하면 프로세서의 부하를 낮게 유지하면서 GameObject의 Mesh의 모양과 비슷하게 만들 수 있다.
복합 콜라이더를 사용했더라도 충분히 디테일하게 표현하지 못하는 경우도 있다. 이때 Mesh Collider를 사용하면 GameObject의 Mesh와 동일하게 맞출 수 있어 아주 세밀한 충돌도 감지할 수 있어진다.
- Capsule모양의 오브젝트의 Mesh Collider
하지만 이는 프로세서에 매우 높은 부하를 주므로 반드시 필요한 경우에만 사용하여야 한다.
또한, 다른 Mesh Collider와의 충돌은 감지가 안되도록 설정되어 있다.
기본 설정이 저러하게 되어 있는 이유는 속도 저하를 방지하기 위함이다.
속성중 Convex옵션을 true로 하게 되면 충돌 감지가 되도록 설정할 수 있다.
하지만 "볼록 다각형"의 모양으로 콜라이더가 수정된다. 이는 원본과 유사하지만 움푹 파인 부분이 전부 메워져 있다.
차량의 바퀴에 사용할 목적으로 제공되는 콜라이더이다.
바퀴의 서스펜션, 바닥과의 마찰, 저항등을 세밀하게 설정할 수 있다.
유니티에 내장된 Terrain Engine를 이용하여 생성한 Terrain에 적용되는 Collider이다. 지형의 복잡도에 따라 프로세서의 부하가 높아진다.
이를 해결하기 위해서는 Low Poly Mesh를 이용하여 MeshCollider로 대체하는 것이다.
동적 콜라이더와 정적 콜라이더끼리 상호작용은 가능하지만, 정적 콜라이더는 RigidBody Component가 없으므로 충돌에 대한 반응은 없다.
유니티에서 말하는 충돌감지란 Collider Component를 가지고 있는 서로 다른 두 GameObject의 Collider끼리 물리적으로 접촉하는 것을 말한다.
이때 충돌 감지를 위해 필요하 조건이 두가지 조건이 있다.
Collider의 Property중 Is Trigger라는 체크 항목이 있다. 이 항목을 true로 체크하면 해당 GameObject는 충돌현상은 일으키지 않지만 감지는 하게 된다.
보통 센서 역할로 많이 사용한다.
충돌하려 하는 두 GameOBject는 충돌시 발생하는 이벤트가 호출하는 콜백 함수가 있다.
RigidBody Component의 사용자 설정에 따라 서로 다르게 상호작용 한다.
세 분류로 나눌수 있는데,
각각 충돌에 대해 다르게 반응한다.
- Collider Component는 있지만 RigidBody Component가 없는 GameObject를 지칭한다.
항상 같은 위치에 그대로 있으며 절대 움직이지 않는 오브젝트에 사용한다. (예시 : 지형)
동적 콜라이더가 충돌을 일으켜도 RigidBody Component가 없으므로 움직이지 않는다.
- Collider Component와 RigidBody Component가 있는 GameObject를 지칭한다.
- 동적 콜라이더라고도 한다.
- RigidBody Property중 Is Kinematic옵션이 체크되어 있는 GameObject를 지칭한다.
Is Kinematic옵션이 체크된 GameObject는 Transform Component를 수정하여 움직일 수는 있지만, Is Kinematic옵션이 언체크된 GameObject처럼 충돌이나 힘에 반응하지 않는다.
상황에 따라 Is Kinematic옵션을 활성화 / 비활성화 하여 사용할 수 있다. 이러한 사용 방법은 평소에는 정적 콜라이더처럼 동작하는 GameObject에게 사용해야 한다.
참조 : https://docs.unity3d.com/kr/2020.3/Manual/CollidersOverview.html