[유니티 기초] 3. 중력과 충돌
3D 게임에서는 물리효과가 필수입니다.
여러 게임사들은 제각기 다른 물리엔진을 사용하며
그 기술들은 나날이 발전해가고 있습니다..
우리의 유니티도 뛰어난 물리효과를 제공해주고 있습니다.
이제부터 하나씩 알아보도록 할까요?
![](https://mblogthumb-phinf.pstatic.net/20150830_131/gold_metal_14409441442004EhBn_PNG/1.png?type=w2)
![](https://mblogthumb-phinf.pstatic.net/20150830_131/gold_metal_14409441442004EhBn_PNG/1.png?type=w2)
오브젝트 하나를 바닥 위로 높에 띄어놓아보았습니다.
지금은 게임을 실행해도 이 위치 그대로입니다.
이 오브젝트가 물리 효과를 받는 물체라고
선언을 해주지 않았기 때문이죠.
![](https://mblogthumb-phinf.pstatic.net/20150830_129/gold_metal_144094414433469qD2_PNG/2.png?type=w2)
![](https://mblogthumb-phinf.pstatic.net/20150830_129/gold_metal_144094414433469qD2_PNG/2.png?type=w2)
속성창 아래에 Add Component 버튼을 누르면 다양한 컴포넌트가 나옵니다.
Physics - Rigidbody 를 선택해줍니다.
![](https://mblogthumb-phinf.pstatic.net/20150830_100/gold_metal_1440944144516Dj1pE_PNG/3.png?type=w2)
이제 오브젝트 하나에
위와 같이 6개 컴포넌트를 가지고 있게 됩니다.
------------------------------------------------
1. Transform
: 기본 속성. 위치, 각도, 크기를 설정합니다.
: 기본 속성. 위치, 각도, 크기를 설정합니다.
2. Collider
: 충돌 속성. 이벤트를 위한 트리거로도 사용됩니다.
3. Rigidbody
: 물리 속성. 무게와 물리 효과를 설정합니다.
4. Mesh
: 버턱스로 이루어진 실제 모델.
5. Mesh Renderer
: 모델의 렌더러. 그림자, 외각선 등 표현을 설정합니다.
6. Shader
: 모델의 쉐이더. 금속, 유리 등 재질을 설정합니다.
------------------------------------------------
보통 3D 오브젝트는 이렇게 6개의 기본 컴포넌트를 가지고 있습니다.
그 중에서도 중력의 영향을 받는 물체를 만들기 위해선
![](https://mblogthumb-phinf.pstatic.net/20150830_15/gold_metal_1440946182944E1cK2_JPEG/p1.jpg?type=w2)
Mesh, Collider, Rigidbody 가 꼭 필요하죠.
먼저 콜라이더부터 알아보도록 하겠습니다.
![](https://mblogthumb-phinf.pstatic.net/20150830_167/gold_metal_14409463830561rI5w_PNG/4.png?type=w2)
콜라이더는 연두색 경계선으로 표현되며,
형태는 여러가지로 만들 수 있습니다.
충돌은 콜라이더 기준이기 때문에
매쉬 상관없이 콜라이더 크기에 따라
충돌이 다르게 일어날 수 있습니다.
1. 콜라이더 크기 : 100%
![](https://mblogthumb-phinf.pstatic.net/20150831_41/gold_metal_1440951618119p9eWC_GIF/m1.gif?type=w2)
2. 콜라이더 크기 : 50%
![](https://mblogthumb-phinf.pstatic.net/20150831_112/gold_metal_1440951627240WiCMY_GIF/m2.gif?type=w2)
3. 콜라이더 크기 : 200%
![](https://mblogthumb-phinf.pstatic.net/20150831_283/gold_metal_1440951636099HAcqF_GIF/m3.gif?type=w2)
영상을 보시면 바닥과 충돌하는 기준이
콜라이더인 것을 확연히 느낄 수 있습니다.
Is Trigger
해당 콜라이더는 충돌이 아닌
오직 트리거로만 사용하겠다는 옵션입니다.
4. Is Trigger 옵션 : On
![](https://mblogthumb-phinf.pstatic.net/20150831_178/gold_metal_1440951647452pJJkE_GIF/m4.gif?type=w2)
Is Trigger가 On되어있는 콜라이더만 있는 물체는
이렇게 충돌없이 쑥 바닥으로 떨어지게 됩니다.
이제 콜라이더는 마무리하고 리지드바디를 살펴보기 전에,
중력을 어떻게 설정하는지 알아보도록 합시다.
![](https://mblogthumb-phinf.pstatic.net/20150830_285/gold_metal_14409463832454KQSq_PNG/5.png?type=w2)
Edit - Project Settings - Physics
이 메뉴로 이동하여 클릭하면,
![](https://mblogthumb-phinf.pstatic.net/20150830_141/gold_metal_1440946383509Lw50S_PNG/6.png?type=w2)
속성 창에 이러한 옵션이 나타납니다.
여기서 Gravity를 보면 Y축 -9.81 이 기본으로 잡혀있네요.
(실제 중력이 바로 9.8 이지요.)
이 수치를 높일수록 물체는 더욱 빨리 떨어지게 됩니다.
혹은 아예 방향을 바꾸는 것도 가능하구요.
5. Gravity : X축 -10
![](https://mblogthumb-phinf.pstatic.net/20150831_145/gold_metal_1440951662609N8Nms_GIF/m5.gif?type=w2)
(너 어디가니...)
X축으로 했더니 저 멀리 날아가는군요.
이렇게 마음대로 중력을 바꿀 수 있답니다.
이제 리지드바디에 대해 살펴보도록 하겠습니다.
![](https://mblogthumb-phinf.pstatic.net/20150831_61/gold_metal_1440947538535eK1Cw_PNG/4-1.png?type=w2)
리지드바디는 물리효과인 만큼
생소한 단어들이 많이 보입니다.
------------------------------------------------
1. Mass
: 무게. 높을수록 충돌이 무거워지지만, 자유낙하가 빨라지지는 않습니다.
: 무게. 높을수록 충돌이 무거워지지만, 자유낙하가 빨라지지는 않습니다.
2. Drag
: 낙하 저항. 높을수록 천천히 낙하합니다.
3. Angular Drag
: 회전 저항. 높을수록 천천히 회전합니다.
4. Is Kinematic
: 외부 물리 효과의 영향을 받는 지의 여부.
: 옵션을 켜면 오직 애니메이션, 스크립트에 의해서만 움직이게 됩니다.
5. Interpolation
: 고정 프레임에서 물리 효과를 부드럽게 할 수 있습니다.
: 일반적으로 플레이어 캐릭터에 적용합니다.
6. Collision Detection
: 연속 충돌 감지 옵션.
: 상당히 빠른 물체가 미처 다른 물체를 충돌하지 않고 통과해버리는 현상을 방지합니다.
7. Constraints
: 위치나 회전을 고정시키는 옵션입니다.
------------------------------------------------
Mass는 두 물체가 충돌할 때 영향을 줍니다.
6. 공 무게 : 1
![](https://mblogthumb-phinf.pstatic.net/20150831_2/gold_metal_1440951673583gjwY7_GIF/m6.gif?type=w2)
7. 공 무게 : 10
![](https://mblogthumb-phinf.pstatic.net/20150831_235/gold_metal_1440951680570vMdVR_GIF/m7.gif?type=w2)
같은 충돌이 일어났을때, 공 무게가 1일 때보다 10이 더 느리게 움직이지요.
이번엔 Constraints로 회전을 막아보겠습니다.
8. 박스 Constraints 옵션 : 회전 On
![](https://mblogthumb-phinf.pstatic.net/20150831_40/gold_metal_1440951689456xDU4R_GIF/m8.gif?type=w2)
박스의 X, Y, Z 회전을 고정했더니
그대로 콕 박혀서 떨어지는 것을 볼 수 있습니다.
점프하는 플레이어 캐릭터도 이처럼
넘어지지 않게 잡아줄 수 있는 것이지요.
------------------------------------------------
세번째 강좌는 여기까지입니다.
다음 강좌에서는 스크립트 입문에 대해 다루어보도록 하겠습니다.
그럼.
댓글 없음:
댓글 쓰기