2020년 1월 20일 월요일

[유니티 기초] 3. 중력과 충돌



3D 게임에서는 물리효과가 필수입니다.
여러 게임사들은 제각기 다른 물리엔진을 사용하며
그 기술들은 나날이 발전해가고 있습니다.​.
우리의 유니티도 뛰어난 물리효과를 제공해주고 있습니다.
이제부터 하나씩 알아보도록 할까요?

오브젝트 하나를 바닥 위로 높에 띄어놓아보았습니다.
지금은 게임을 실행해도 이 위치 그대로입니다.
이 오브젝트가 물리 효과를 받는 물체라고
선언을 해주지 않았기 때문이죠.

​속성창 아래에 Add Component 버튼을 누르면 ​다양한 컴포넌트가 나옵니다.
Physics - Rigidbody 를 선택해줍니다.

이제 오브젝트 하나에
위와 같이 6개 컴포넌트를 가지고 있게 됩니다.

------------------------------------------------

1. Transform
   : 기본 속성. 위치, 각도, 크기를 설정합니다.

2. Collider
  : 충돌 속성. 이벤트를 위한 트리거로도 사용됩니다.

3. Rigidbody
  : 물리 속성. 무게와 물리 효과를 설정합니다. 

4. Mesh
  : 버턱스로 이루어진 실제 모델.

5. Mesh Renderer
  : 모델의 렌더러. 그림자, 외각선 등 표현을 설정합니다.

6. Shader
   : 모델의 쉐이더. 금속, 유리 등 재질을 설정합니다.

------------------------------------------------

보통 3D 오브젝트는 이렇게 6개의 기본 컴포넌트를 가지고 있습니다.

그 중에서도 중력의 영향을 받는 물체를 만들기 위해선
Mesh, Collider, Rigidbody 가 꼭 필요하죠.

먼저 콜라이더부터 알아보도록 하겠습니다.

콜라이더는 연두색 경계선으로 표현되며,
형태는 여러가지로 만들 수 있습니다.

충돌은 콜라이더 기준이기 때문에
매쉬 상관없이 콜라이더 크기에 따라
충돌이 다르게 일어날 수 있습니다.

1. 콜라이더 크기 : 100%

2. 콜라이더 크기 : 50%

3. 콜라이더 크기 : 200%
 
영상을 보시면 바닥과 충돌하는 기준이
콜라이더인 것을 확연히 느낄 수 있습니다.


Is Trigger
해당 콜라이더는 충돌이 아닌
오직 트리거로만 사용하겠다는 옵션입니다.

4.  Is Trigger 옵션 : On
Is Trigger가 On되어있는 콜라이더만 있는 물체는
이렇게 충돌없이 쑥 바닥으로 떨어지게 됩니다.
​ 
이제 콜라이더는 마무리하고 리지드바디를 살펴보기 전에,
중력을 어떻게 설정하는지 알아보도록 합시다.

 
Edit - Project Settings - Physics
이 메뉴로 이동하여 클릭하면,

속성 창에 이러한 옵션이 나타납니다.
여기서 Gravity를 보면 Y축 -9.81 이 기본으로 잡혀있네요.
(실제 중력이 바로 9.8 이지요.)

이 수치를 높일수록 물체는 더욱 빨리 떨어지게 됩니다.
혹은 아예 방향을 바꾸는 것도 가능하구요.

5. Gravity : X축 -10
(너 어디가니...)
X축으로 했더니 저 멀리 날아가는군요.
이렇게 마음대로 중력을 바꿀 수 있답니다.

이제 리지드바디에 대해 살펴보도록 하겠습니다.

리지드바디는 물리효과인 만큼
생소한 단어들이 많이 보입니다.

------------------------------------------------

1.  Mass
 : 무게. 높을수록 충돌이 무거워지지만, 자유낙하가 빨라지지는 않습니다.

2.  Drag
  : 낙하 저항. 높을수록 천천히 낙하합니다.

3. Angular Drag
  : 회전 저항. 높을수록 천천히 회전합니다.

4. Is Kinematic
  : 외부 물리 효과의 영향을 받는 지의 여부.
  : 옵션을 켜면 오직 애니메이션, 스크립트에 의해서만 움직이게 됩니다.

5. Interpolation
  : 고정 프레임에서 물리 효과를 부드럽게 할 수 있습니다.
  : 일반적으로 플레이어 캐릭터에 적용합니다.

6. Collision Detection
  : 연속 충돌 감지 옵션.
  : 상당히 빠른 물체가 미처 다른 물체를 충돌하지 않고 통과해버리는 현상을 방지합니다.

7. Constraints
  : 위치나 회전을 고정시키는 옵션입니다.

------------------------------------------------
Mass는 두 물체가 충돌할 때 영향을 줍니다.

6. 공 무게 : 1

7. 공 무게 : 10

같은 충돌이 일어났을때, 공 무게가 1일 때보다 10이 더 느리게 움직이지요.

이번엔 Constraints로 회전을 막아보겠습니다.

8. 박스 Constraints 옵션 : 회전 On
박스의 X, Y, Z 회전을 고정했더니
그대로 콕 박혀서 떨어지는 것을 볼 수 있습니다.

점프하는 플레이어 캐릭터도 이처럼
 넘어지지 않게 잡아줄 수 있는 것이지요.

------------------------------------------------

세번째 강좌는 여기까지입니다.
다음 강좌에서는 스크립트 입문에 대해 다루어보도록 하겠습니다.

그럼.

댓글 없음:

댓글 쓰기