이번에는 유니티에서 물리엔진을 적용해보겠습니다.
사용할 것은 RigidBody와 Physic Material 그리고 Collider에 차례대로 알아보겠습니다.
일단은 물리엔진을 적용할 간단한 프로젝트를 하나 만들어볼건데요 땅을 만들어서 공이 튕기도록 만들어 볼겁니다.
프로젝트를 생성하고 큐브를 하나 만들어줍니다.
[메뉴] GameObject -> 3D Object -> Cube 를 선택해줍니다.
이름은 Ground로 변경해줍니다. 그리고 X값과 Z값을 키워서 늘려줘서 땅의 모양처럼 만들어줍니다.
그리고 공이 굴러가도록 Rotation값을 수정해줘서 경사진땅을 만들어 줍니다.

이번에는 굴러갈 공을 만들어 보겠습니다.
[메뉴] GameObject -> 3D Object -> Sphere 를 선택해줍니다.
이름은 Ball로 수정해줍니다.
이름은 Ball로 변경해줍니다. 그리고 Position에 X값과 Y값을 수정해서 굴러갈 위치에 둡니다.
그리고 Rigidbody라는 컴포넌트를 하나 추가해줍니다. Rigidbody에 대해서는 아래에서 설명해드리겠습니다.

여기까지 잘 따라오셨다면 게임뷰에 아래와 같은 모습을 볼 수 있습니다.
혹시라도 조금 달라서 똑같게 보고 싶다 하시는 분은 카메라의 값들을 수정하시길 바랍니다.
카메라의 Position을 0 6 -26 으로 수정해주시면 됩니다. 자 그럼 재생을 한번 해보겠습니다.
공이 아주 잘~ 굴러갑니다!!! 처음 적용해보는거라 신기하네요.

잘 굴러갔나요? 그럼 이제 Rigidbody에 대해서 알아보겠습니다.
공이 아래로 굴러가기 위해서는 공에 중력과 같은 힘이 있어야 움직이겠죠?
그래서 중력과 같은 물리법칙을 유니티에서는 Rigidbody라는 컴포넌트를 통해서 구현합니다.
그런데 왜 Rigidbody를 공에만 추가했을까요???
Rigidbody를 Ground에도 적용을 시키게 되면 Ground도 중력때문에 공과 같이 아래로 떨어지게 됩니다.
Rigidbody에서 특정 물체가 중력에 영향을 안받게 하기 위해서는 Use Gravity라는 속성의 체크를 해제해주시면 됩니다.
그럼 Use Gravity를 해제하면 무중력 상태와 같이 동작한다는 뜻이지 물리법칙을 받지 않는다는 뜻은 아닙니다.
그래서 실행하면 공에 맞은 Ground가 회전하면서 아래로 떨어지는걸 볼 수 있습니다.
제가 원하는건 설정한 땅 위에서 공이 굴러가길 원한 것이기 때문에 Ground에 Rigidbody컴포넌트는 삭제해줍니다.
그럼 이번에는 Physic Material을 알아볼건데요.
Physic Meterial은 물리동작을 할 때 물체가 어떤 물성을 갖는지를 결정해주는데요 정할 수 있는 값은 4가지 입니다.
1.Bounciness : 얼마나 튀어오르는가에 대한 것입니다.
2.Static Fiction : 마찰력인데요. 멈춰있는 상태에서 움직이기 시작하려면 어느정도의 힘이 가해져야 하는가에 대한 값입니다.
3.Dynamic Fiction : 움직이는 중에 마찰력이 어느정도 될 것인가에 대한 값입니다.
4.Fiction Combine : 마찰력이란 것은 두 물체가 있어야지만 마찰력이 생기는거죠? 그래서 공과 그라운드가 부딪혔을 때 마찰력이 생기는 겁니다.
이 때 공의 마찰력이 있을 것이고 그라운드의 마찰력이 있을텐데 어떤 값을 적용할지의 대한 선택입니다.
5.Bounce Combine : 마찬가지로 두 물체가 부딪혔을 때 어떤 Bounciness의 값을 쓸지에대한 것입니다.

Physic Material을 만드는 방법은 Project뷰에서 우클릭을 누르고 Create -> Physic Material을 눌러 만들어줍니다. 이름은 Bouncy라고 설정해주겠습니다.
그리고 Bounciness의 값을 1로 설정해줍니다. 그리고 이제 Bouncy파일을 드래그해서 Ball에 놓아주면 Ball에 Bouncy가 적용됩니다.
적용된 모습은 다음의 Collider를 보면서 확인해 보겠습니다.
Collider는 번역하면 충돌체라고 하는데요 말그대로 충돌이 발생했는지를 감지해주는 역할을 합니다.
그래서 만약 Collider 컴포넌트를 삭제시키게 되면 물체와 충돌을 일으키지 않게 되고 통과하게 됩니다.
즉, Rigidbody에서 물리를 적용할 때 공에 적용되는게 아니라 Collider에 의해 적용되는 겁니다.
그래서 Collider가 없으면 그라운드와 부딪히지 않고 그냥 떨어지게 되는겁니다.
Collider의 종류가 모양에 맞게 여러개가 있는데요
Collider를 지웠다가 새롭게 추가할 때 다른 모양의 Collider를 추가해주게 되면 생각했던것과 다른 물리가 적용될 수 있으니 추가 할 때 주의해야합니다.
예를 들어 지금 Ball에 Sphere Collider가 적용되어 있는데 이것을 Box Collider를 추가해보겠습니다.
원래있던 Sphere Collider컴포넌트를 삭제하고 Box Collider를 추가해주었습니다.

공을 잘 보면 겉에 초록색 테두리가 쳐져 있는게 보이는데요. Box형태의 Collider를 추가해줬기 때문에 박스형태의 충돌이 된다고 보여주는겁니다.
이 상태로 재생을 시켜보세요. 공이 잘 굴러가나요? 안굴러갑니다. 그냥 멈추네요.
충돌체가 더이상 동그란 공이 아니기 때문입니다. 그럼 Collider에서 설정할 수 있는 값들에 대해 보겠습니다.

↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
Box Collider를 살펴보겠습니다.
Center의 값을 수정해서 충돌체의 위치를 지정할 수 있습니다.
지금은 공의 딱 맞게 되어 있지미나 수정하면 위치가 바뀌게 됩니다.
Size를 수정해서 충돌체의 크기를 수정할 수 있는데요
위의 초록 박스의 크기가 커지고 줄어들게 됩니다.
설정을 잘 못하게 되면 붕뜨거나 파묻히게 됩니다.
이상 유니티에서 물리엔진을 알아봤습니다.
끝!