Unity/IGDC 입문 프로젝트

2. Rigidbody & Collider

말하는 닭 2023. 8. 29. 19:40

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만으로는 충돌 검사를 할 수 없습니다. 

두 Cube는 Rigidbody가 있지만...

 

 

Collider

 

충돌을 감지시키기 위해서는 충돌의 영역을 설정해줘야 합니다. 

Cube를 처음 생성했을 때 붙어있었기 때문에 위 gif와 같이 통과하지는 않습니다.
(위 gif는 BoxCollider를 비활성화하고 촬영한 것입니다)

 

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