본문 바로가기

Unity 공부시작

유니티 :: Physics Manager, Rigidbody, Collider

< 절대 강좌 유니티 5 > 위키북스, 이재현 지음


* Physics Manager


[Edit] - [Project Settings] - [Physics] 에서 물리엔진의 속성들을 설정할 수 있다.


1. Gravity

기본 값은 Y축 값에 -9.81로 되어있는데 이는 밑으로 작용하는 중력가속도 -9.8m/s^2를 의미한다.


2. Default Material

두 물체가 충돌했을 때 반작용에 대한 속성을 설정한다. None으로 설정하지 않으면 각 Rigidbody마다 개별적으로 설정할 수 있다.


3. Sleep Velocity, Sleep Angular Velocity

이동속도와 회전가속도가 일정 수치 이하로 떨어지면 자동으로 물리엔진 영향에서 벗어나게 해 CPU 연산의 부하를 줄여준다.

이를 Rigidbody Sleeping이라고 한다.


Rigidbody Sleeping에서 깨어나는 조건

- Rigidbody 컴포넌트를 가진 게임 오브젝트와 충돌 발생

- Rigidbody 속성 변경

- AddForce류의 함수로 힘을 가할 때


4. Raycasts Hit Trigger

체크가 해제되면 Raycast와의 충돌 감지가 되지 않는다.


5. Layer Collision Matrix

레이어 간에 충돌 감지 여부를 선택적으로 활성화하거나 비활성화할 수 있다.

아군의 총알은 무시하고 적군의 총알만 충돌판정을 하고 싶다면, 레이어를 다르게 설정하여 충돌 감지란을 체크 해제 및 체크해주면 된다.



* Rigidbody


1. Mass    : 상대적인 의미의 질량으로 오브젝트 간 몇 배가 무거운지를 뜻하는 것이지 무게 단위가 아니다.


2. Drag    : 이동할 때 적용되는 마찰 계수


3. Angular Drag    : 회전할 때 적용되는 마찰 계수


4. Use Gravity    : 중력 적용 여부


5. Is Kinematic    : 체크할 시에 물리엔진의 영향을 받지 않으며 Transform 컴포넌트를 이용해 이동한다.


6. Interpolate    : 물리력을 이용한 움직임이 끊어지는 현상이 발생할 때 보간해주는 기능


Interpolate : 이전 프레임의 Transform에 맞게 움직임을 부드럽게 처리해준다.

Extrapolate : 다음 프레임의 Transform의 변화를 추정해 움직임을 부드럽게


7. Collision Detection    : 아주 빠른 물체는 물리엔진이 충돌 검출을 못할 수도 있는데, 세밀한 충돌을 검출하기 위한 속성이다.

 고속의 오브젝트가 아니라면 Discrete 속성을 하는 것이 좋다.

Discrete -> Continuous -> Continuous Dynamic 순서로 정밀하게 검출한다.

Continuous Speculative : dynamic과 kinematic 모두에서 사용할 수 있는 충돌 검출 속성으로, 

angular motion을 더욱 잘 처리하지만 고속 오브젝트는 놓칠 수 있다.


8. Freeze Position    : 움직임 제한


9. Freeze Rotation    : 회전 제한



* Collider


- 종류


1. Box Collider

2. Capsule Collider


주로 인체, 나무, 가로등과 같은 모델의 충돌체로 사용할 때가 많다. 


3. Mesh Collider


충돌 감지를 위한 CPU 부하가 가장 높은 Collider로, 세밀한 충돌 감지에 사용된다.


기본값으로 Mesh Collider 간의 충돌 감지가 안되도록 설정되어 있다. 속도 저하를 방지하기 위함인데

만약 정밀한 충돌 감지를 원한다면 Mesh Collider 의 속성 중 Convex 옵션을 체크해주면 된다.


복잡한 전체 스테이지에 빠짐없이 콜라이더를 부여할 때 사용되기도 하는데, 스테이지 전체를 로우폴리 Mesh를 제작하고

Mesh Collider를 적용한 후에 Mesh Renderer는 제거하고 게임 스테이지에 오버랩해서 사용한다.


4. Wheel Collider


바퀴의 서스펜션, 바닥과의 마찰저황과 미끄러지는 저항을 세밀하게 설정할 수 있다.


5. Terrian Collider


Terrain Engine을 이용해 생성한 지형에 적용되는 Collider이다. 지형의 복잡도에 따라 Collider의 부하가 높아진다.

로우폴리 Mesh를 이용해 Mesh Collider로 대체하는 것도 좋은 방법이다.


연산 처리속도 ) Sphere > Capsule > Box


* Collision 타입이 같고 있는 정보


1. collider : 충돌한 게임 오브젝트의 Collider 컴포넌트

2. contacts : 물체 간 충돌지점으로 물리엔진에 의해 생성


- normal : 충돌지점의 법선

- otherCollider : 충돌지점의 다른 Collider

- point : 충돌지점의 위치

- separation : 충돌한 두 Collider 간의 거리

- thisCollider : 충돌지점의 첫 번째 Collider


3. gameObject : 충돌한 게임오브젝트

4. impulse : 충돌 시 발생한 충격량

5. relativeVelocity : 충돌한 두 객체의 상대적인 선 속도

6. rigidbody : 충동할 게임 오브젝트의 Rigidbody 컴포넌트

7. transform : 충돌한 게임 오브젝트의 Transform 컴포넌트