3D 게임 만들기(2)
저번 시간은 3D 게임 만들기를 시작하기 전, 2D 게임과의 차이점이 존재하는 것 중 씬 화면구성과, 기즈모 그리고 머티리얼에 대해 간단히 알아보았습니다. 이제부터 본격적으로 3D 게임을 한번 만들어 보는 시간을 가지겠습니다.
게임 무대 만들기
우선 게임의 무대가 될 공간을 생성할 것입니다. 2D에서는 씬에서 카메라가 보이는 부분만 오브젝트로 채워서 게임을 꾸밀 수 있었지만, 3D 공간에서는 카메라 뷰의 움직임이 훨씬 자유롭기 때문에 조금 더 복잡하다고 느낄 수 있습니다.
저는 하이어라키 창에서 우클릭으로 생성할 수 있는 기본 3D오브젝트인 Plane으로 바닥을 생성하고, 마찬가지로 Cube를 사용해 벽을 생성해 주겠습니다. 그리고 그 공간에 우리가 사용할 플레이어를 Cylinder를 사용하여 생성해 주었습니다.
생성된 맵과 플레이어의 모습입니다.
기본적으로 오브젝트는 흰색으로 생성되지만, 바닥과 플레이어등 오브젝트를 쉽게 구분하기 위해, 앞서 말씀드린 머티리얼을 생성하여 오브젝트의 색상을 부여해 주었습니다.
Vertex Snapping(정점 스내핑)
3D 공간에서 오브젝트를 생성하면 정확하게 오브젝트끼리 연결시키거나 밀착시키기가 어렵습니다. 그럴 때 사용하는 기능이 바로 스내핑(Snapping)입니다. 정확히는 Vertex Snapping으로, v키를 누른 상태에서 오브젝트의 원하는 정점에 마우스를 갖다대고 마우스 왼쪽 버튼을 누르고 있는 상태에서 또 다른 오브젝트의 정점에 드래그 하면 해당 위치에 착 달라붙게 됩니다. 위 사진을 보시면 생성된 공간의 벽면 모서리가 보기싫게 살짝 튀어나온 것을 볼 수 있습니다. 이것을 정점 스내핑을 사용하여 깔끔하게 정리해보겠습니다.
Vertex Snapping(정점 스내핑)을 사용하여 깔끔하게 정리하였습니다. 해당기능은 앞으로 게임을 만들어 나갈 때에도 계속해서 유용하게 사용될 것입니다.
카메라 뷰 조정
3D 게임 환경에서는 카메라의 역할이 보다 중요해집니다. 어떤 장르의 게임이냐에 따라 카메라의 시점이나, 위치 혹은 움직임 여부 등이 결정되기도 합니다. 제가 만드는 예제게임은 고정된 카메라를 유지하겠습니다. 카메라는 게임에서 보이는 화면의 모습을 좌우하기 때문에 위치를 잘 조정해야합니다. 카메라의 위치는 다른 오브젝트와 마찬가지로 Transform을 사용하여 조정할 수 있습니다.
저는 위 사진과 같이 위치를 정하였습니다. 이렇게 배치하면 게임뷰에서 어떻게 보이는 지 확인해 보겠습니다.
게임 뷰에서는 이렇게 보입니다. 이 시점은 게임을 플레이하는 플레이어가 바라보는 시점과 동일합니다.
ㅁ
카메라가 선택된 상태에서는 씬에서 메인카메라가 바라보는 시점에 대해서 실선으로 표현되어 있는 모습을 볼 수 있고, 게임뷰에서 보이는 화면이 어떻게 되어있는지 작은 화면으로 표시됩니다. 카메라의 시점은 게임 제작자가 씬에서 화면을 전환해도 고정된 위치에는 전혀 영향을 끼치지 않습니다.
광원 조정
Directional Light는 한마디로 빛을 나타냅니다. 현재 만들고 있는 예제게임에서는 중요한 역할을 하진 않지만, 그래픽이나 시각적인 요소를 다룰 때에는 상당히 중요한 부분을 차지하는 것이 라이팅 부분입니다. 따라서 저는 색감과 그림자가 자연스럽게 보일 수 있는 정도로만 위치를 조정하였습니다.
Directional Light는 태양과 같다고 생각하면 편합니다. 이미 저 멀리에 크게 떠있기 때문에, 해가 지고 뜨는 것처럼 Rotate(회전)을 통해 그림자와 빛의 양을 조절할 수 있습니다. 사진에서처럼 얇은 노란실선으로 빛이 내리쬐는 방향을 나타내고 있습니다.
<NEXT>
여기까지 모두 마치셨다면, 게임을 만들 기본적인 세팅은 끝난 것입니다. 내일은 2D 플랫포머 게임만들기에서 했던 것과 비슷한 아이템 생성 및 UI요소 다루는 방법에 대해서 이야기 하겠습니다. 감사합니다.
'게임 프로그래밍 > 게임개발 중급' 카테고리의 다른 글
게임개발 중급(24) - 3D 게임 만들기(4) (2) | 2023.05.14 |
---|---|
게임개발 중급(23) - 3D 게임 만들기(3) (0) | 2023.05.13 |
게임개발 중급(21) - 3D 게임 만들기(1) (0) | 2023.05.12 |
게임개발 중급(20) - 유니티 엔진 활용(3) (0) | 2023.05.10 |
게임개발 중급(19) - 유니티 엔진 활용(2) (0) | 2023.05.08 |