IGDC 입문 프로젝트
유니티에서 물리 연산을 위한 리지드바디와 콜라이더에 대해 알아보겠습니다.
RigidBody
이전에 만든 Cube를 선택하고, 인스펙터 창에서 'Add Component'를 선택하여 Rigidbody를 추가합니다.
![]() |
![]() 추가된 Rigidbody Component |
rigidbody는 붙은 물체에 대해 물리적 동작을 가능하게 해주는 컴포넌트입니다.
컴포넌트의 요소는 다음과 같습니다 (출처: https://ariel1910.tistory.com/entry/유니티-1-Rigidbody)
요소 | 기능 |
Mass | 오브젝트의 질량 (단위 kg) |
Drag | 공기저항 (값이 클수록 속도가 빨리 감소) |
Angular Drag | 회전 시의 공기저항 (값이 클수록 회전속도가 빨리 감소) |
Use Gravity | 오브젝트에게 작용하는 중력의 영향 여부 (체크 시 중력 작용) |
Is Kinematic | 오브젝트에게 작용하는 물리효과의 여부 (체크 시 물리효과 무시) |
Interpolate | 움직임을 부드럽게 하기 위한 기능 -none: 적용하지 않음 -interpolate: 이전 프레임의 위치에 맞게 움직임 보간 -extrapolate: 다음 프레임의 위치를 추정해 움직임 보간 |
Collision Detection | 빠르게 움직이는 오브젝트가 충돌의 감지 없이 다른 오브젝트를 지나쳐가는 것을 방지 -discrete: 모든 콜라이더와 불연속 충돌 검사. 일반적인 방법 -continuous: 'continuous dynamic'인 오브젝트와 연속적 충돌 검사. 그 외는 불연속 충돌 검사 -continuous dynamic: 상동 (충돌 검사 대상은 continuous) -continuous speculative: 표 아래의 링크 참고 |
Constraint | 움직임 고정 -freeze position: 월드 좌표계의 축에서의 이동을 막음 -freeze rotation: 로컬 좌표계의 축에서의 회전을 막음 |
하지만, rigidbody만으로는 충돌 검사를 할 수 없습니다.

Collider
충돌을 감지시키기 위해서는 충돌의 영역을 설정해줘야 합니다.
Cube를 처음 생성했을 때 붙어있었기 때문에 위 gif와 같이 통과하지는 않습니다.
(위 gif는 BoxCollider를 비활성화하고 촬영한 것입니다)

IsTrigger | 체크 시, 부딪히지 않고(통과) 충돌 체크 |
Center | 콜라이더 중심의 위치 |
Size | 콜라이더의 크기 |
충돌 메시지를 받기 위해서...
트리거가 아닐 경우,
OnCollisionEnter, OnCollisionStay, OnCollisionExit 함수를 통해 메시지를 받습니다.
트리거일 경우에는
OnTriggerEnter, OnTriggerStay, OnTriggerExit 함수를 통해 메시지를 받습니다.
ex)
// 트리거가 아닐 경우
void OnCollisionEnter(Collision collision) {
// 실행문
}
// 트리거일 경우
void OnTriggerExit(Collider other){
// 실행문
}
또한 콜라이더는 항상 충돌을 감지하지 않습니다.
아래 주소의 '충돌 액션 매트릭스'에서 충돌 가능 경우를 확인을 할 수 있습니다.
https://docs.unity3d.com/kr/2021.3/Manual/CollidersOverview.html
콜라이더 - Unity 매뉴얼
Collider 컴포넌트는 물리적 충돌을 위해 게임 오브젝트의 모양을 정의합니다. 보이지 않는 콜라이더는 게임 오브젝트의 메시와 완전히 똑같을 필요는 없습니다. 메시의 대략적인 근사치로도 효
docs.unity3d.com
'Unity > IGDC 입문 프로젝트' 카테고리의 다른 글
6. 몬스터 스폰 및 이동 (0) | 2023.09.01 |
---|---|
5. Vector, Transform (0) | 2023.08.31 |
4. 맵 만들기 (0) | 2023.08.31 |
3. Script 생성 (0) | 2023.08.30 |
1. 에디터 레이아웃 (0) | 2023.08.29 |