본문 바로가기
  • 불확실한 내일을 위해
유니티 C#/이론

유니티 기초 - 콜라이더(Collider)와 리지드바디(Rigidbody)란?

by 그린초코 2023. 7. 24.

콜라이더(Collider)

- 오브젝트 생성될 때 항상 같이 만들어지는 물체를 부딪치게 하는 개념으로 inspector창에서 설정할 수 있다.

(2D에서는 자동으로 만들어지지 않는다. 따로 Add component 해야 한다.)

- 예를 들어 3D에서 큐브를 하나 만들면 사각형 콜라이더가 생성되는 것이다.

- 기본적으로 콜라이더는 기본 오브젝트와 모양이 같다.

- 편집하여 콜라이더만 크기를 다르게 할 수도 있다.

(inspector 의 맨 아래에서 Add component에서 콜라이더의 원하는 모양을 추가할 수 있다.)

- 만약 콜라이더만 삭제하면 유령처럼 보이기는 하나 물리적으로 부딪히지 않게 된다.

(예를 들어 문이 네모 모양이지만 문 근처에만 가도 문이 열리게 하는 등 콜라이더의 모양을 바꿔 설정할 수 있다.)

- 에셋모양 그대로의 콜라이더를 만들고 싶으면 Mash Collide를 선택하면 된다.

- Is Trigger 체크 확인하기 (콜라이더의 Inspector창에서 선택/해제 할 수 있다. 두 충돌 객체끼리 만나면 밀어내지 않고 통과하는 것으로, 예를 들어 캐릭터가 총에 맞을 때 이걸 선택해줘야 총알이 튕겨져나가지 않는다.)

Is Trigger : 충돌 시 통과 여부 선택

Material : 물리적인 재질

Center : 위치 조절

Radius : 반지름 길이 조절

Height : 높이 길이 조절

 

리지드바디(Rigidbody)

- 물리적인 중력을 갖게 할 수 있는 기능.

- Inspector의 Add component에서 추가하면 된다.

- Inspector창에서 Rigidbody - Use Gravity 를 통해 중력을 적용할 수 있다.

(마찰이나 무게 등 빼고 중력만 해제하고 싶으면 Use Gravity를 해제하거나 Gravity Scale 을 0으로 만들어주면 된다. 우주공간 게임, 총알 등에서 사용된다.)

- 적용되어있지 않으므로 충돌 등의 마찰이 필요할 때 Rigidbody 2D를 Add component 해주자.

- 리지드바디는 콜라이더를 함께 설정해주어야 한다. 바닥 오프젝트를 만들고 바닥의 콜라이더를 해제하면 바닥을 뚫고 들어가버린다 !

- 중력의 강도를 조절하고 싶으면 Edit – Project Settings – Physics 에서 Gravity의 Y 값을 수정하면 된다.

(기본적으로 Y는 –9.81로 되어있다.)

- 스크립트를 통해서도 중력을 조절할 수 있다. (mass는 무게를 의미하며 마찰에도 영향을 미친다)

Is Kinematic 체크 확인하기 (두 객체가 충돌했을 때 충돌 시뮬레이션을 하지 않도록 함. 이걸 체크하면 서로 튕겨서 나가지 않는다.)

 

Mess : 질량(무게)

Drag : 공기저항  Autometic center of

Angular Drag : 회전저항

Automatic Center Of Mass : (단어가 길어서 mess가 짤려있음) 물리 시스템 예측 질량 중심 사용 (좌표로 설정 가능)

Automatic Tensor :물리 시스템 예측 텐서 회전 사용 

Use Gravity : 중력 적용 여부

Is Kinematic : 외부 물리 적용 차단 여부 

Interpolate - Interpolate : 이전 두 물리 업데이트에서 리지드바디의 포즈와 속도를 사용하여 현재 프레임에서 리지드바디의 포즈를 계산하고 적용. 정확도가 중요한 상황일때 적용. 

Interpolate - Extrapolate : 이전 물리 업데이트에서 리지드바디의 포즈와 속도를 사용하고 다음 물리 업데이트에서 리지드바디의 포즈를 예측하여 현재 프레임의 포즈를 계산하고 예측. 

Collision Detection - Discrete : 불연속적으로 충돌 검사

Collision Detection - Continuous : 연속적으로 충돌 검사

Collision Detection - Speculative : 추측성 충돌 검사

Contraints : 위치와 각도에 물리 구현 적용 여부 (캡슐같이 생인 오브젝트에 rigidbody를 적용하고 플레이하면 중력때문에 옆으로 쓰러지는데, 이를 방지할 수 있는 설정을 할 수 있다. 여기서 Freeze Rotation X, Y, Z 를 선택하면 캡슐은 쓰러지지 않는다. )

 

콜라이더(Collider)와 리지드바디(Rigidbody) 의 관계

- 두 오브젝트 모두 Collider 가 있고, 두 오브젝트 중 적어도 한 오브젝트에 Rigidbody 가 있어야 충돌이 가능하다. 

- 콜라이더와 리지드바디 사용에 따라 충돌 판정이 Collision(충돌 모드)와 Trigger(통과 모드)로 나뉠 수 있다.

- Collision(충돌 모드)는 오브젝트끼리 충돌하고 물리적인 작용까지 일어나는 것이고,

- Trigger(통과 모드)는 오브젝트끼리 충돌한 것은 맞지만 물리적인 작용이 일어나지 않는다. (오브젝트끼리 충돌은 했지만 - 그냥 통과해버린다.) 

- 양쪽 오브젝트에 콜라이더와 리지드바디 모두 적용하면 서로 충돌하는 Collision(충돌 모드) 이고, 양쪽 오브젝트에 콜라이더를 적용하고 한쪽 오브젝트에만 리지드바디를 적용하면 Trigger(통과 모드)이다.

 

728x90

댓글