본문 바로가기

전체 글213

게임개발 중급(28) - 3D 게임 만들기(8) 3D 게임 만들기(8) 이전에는 경계의 생성방식을 다르게 하여 만들어 보았습니다. 원래는 이번에 플레이어가 아이템을 먹으면 일정시간이 지난 후, 같은 자리에 다시 생겨나도록 하는 아이템 리스폰에 대해 알아보려 했으나 생각해보니 같은 자리에 생성되면 의미가 없다고 생각하여 랜덤하게 생성하는 방법에 대해 알아보겠습니다. 아이템 프리팹화 저는 초반에 프리팹을 사용하지 않아도 될 것 같다고 판단하여 아이템을 프리팹화 시키지 않고 사용했습니다. 하지만 이렇게 생성과 관련된 일을 해줘야 할 때에는 프리팹화가 거의 필수적입니다. 아이템으로 사용중이던 오브젝트 하나를 그대로 프리팹화 시켜서 Prefabs 폴더를 만들어 보관해 줍니다. 프리팹화 시켰다면, 기존의 아이템 오브젝트들은 전부 삭제합니다. 이제 스크립트를 작성.. 2023. 5. 19.
게임개발 중급(27) - 3D 게임 만들기(7) 3D 게임 만들기(7) 저번에는 게이지 UI, 소리, 파티클을 적용시켰습니다. 이번에는 2D 플랫포머 게임 만들기에서 했던 경계를 생성해 주겠습니다. 게임 맵을 구성하여 만들긴 했지만, 현재 맵을 이동하다 보면 이탈할 가능성이 있습니다. 물론 벽의 높이를 높여 탈출하지 못하게 하는 방법도 있지만, 저희는 경계를 생성하여 벗어나면 원위치로 돌아올 수 있게끔 만들어 주겠습니다. 경계 생성 경계를 생성하여 정해진 위치로 돌아오게 만드는 방법은 여러가지가 있습니다. 이전에 2D 플랫포머 게임 만들기에서 했던 경계생성은 Vector3.zero를 사용하였기 때문에 원점으로 돌아오는 방식이었습니다. 하지만 이런 경우는 우리가 오브젝트를 원점에 생성했을 때에만 적용이 가능합니다. 이번에는 조금 다른 방식으로 경계를 생.. 2023. 5. 18.
게임개발 중급(26) - 3D 게임 만들기(6) 3D 게임 만들기(6) 저번시간엔 시간관계상 4방향 UI를 만들고 자연스럽게 움직이도록 바꾸어주는 작업까지 진행하였습니다. 이번에는 원래 저번에 하려 했던 게이지 UI 시스템을 만들고, 이어서 소리와 파티클을 적용시키는 방법에 대해서 알아보겠습니다. 게이지UI 게이지 UI를 만들어 주겠습니다. 이번에도 에셋스토어에서 간단한 UI 이미지를 위해 에셋을 다운받습니다. 저는 Simple Round Gauge라는 에셋을 다운받았습니다. 에셋을 유니티 프로젝트에 임포트하면, 여러 사용할 수 있는 이미지들이 생깁니다. 저희가 이번에 만들것은 게이지 바입니다. 우선 UI로 이미지를 생성합니다. 이미지가 생성되었다면, 앵커와 RectTransform을 잘 조절해 위치를 정해줍니다. 저는 오른쪽 상단 구석에 배치하도록 .. 2023. 5. 16.
게임개발 중급(25) - 3D 게임 만들기(5) 3D 게임 만들기(5) 저번에는 UI를 사용한 움직임과 다양한 방법으로 움직임을 구현하는 것에 대해 살펴보았습니다. 이번에는 UI를 사용한 움직임을, 코드수정을 통해 자연스럽게 움직이도록 바꿔주고, 상하좌우 4방향으로 만들어 보겠습니다. 그리고 게이지 UI를 만들어 아이템을 먹으면 게이지가 줄어들도록 하는 시스템을 추가하는 것을 해보도록 하겠습니다. 상, 하 방향 UI 만들기 이전에는 좌우방향 UI 컨트롤까지 만들고, 상하방향은 F,B키로 처리했습니다. 이제 상하방향도 UI로 만들겠습니다. 방법은 이전과 같습니다. 우선 상하 버튼은 다른 에셋을 사용해 만들어 보겠습니다. 2D Simple UI Pack이란 에셋을 에셋스토어에서 다운받아서, 버튼에 적용시키겠습니다. 상하 버튼의 코드 작성은 이전에 작성했던.. 2023. 5. 15.
게임개발 중급(24) - 3D 게임 만들기(4) 3D 게임 만들기(4) 저번시간에는 아이템 생성, 방향키로 플레이어 이동하기 및 아이템 획득처리, 점수UI 처리를 하였습니다. 이번에는 UI를 사용한 플레이어의 움직임과 더불어 다양한 방식의 움직임에 대해 알아보겠습니다. UI를 사용한 플레이어 움직임 이번에 해볼 것은 키보드입력을 통한 움직임이 아닌 UI를 클릭하거나 스마트폰에서 게임을 빌드했다면, 터치를 통해서 이동을 조작하는 방식을 해볼 것입니다. 우선 에셋스토어에서 UI로 사용할 이미지를 찾아서 사용할 것입니다. 저는 "Simple Button Set 01" 이란 이름의 무료 에셋을 다운받았습니다. 에셋 스토어에서 다운받은 것을 유니티에서 사용하려면, 유니티에 들어가서 Package Manager -> Packages에 MyAssets로 들어가시면.. 2023. 5. 14.
게임개발 중급(23) - 3D 게임 만들기(3) 3D 게임 만들기(3) 저번 시간에는 Vertex Snapping(버택스 스내핑)을 이용해서 오브젝트를 특정 위치에 정확히 배치하여 무대를 만들었고, 3D 프로젝트를 시작하면 기본적으로 생성되는 메인카메라와 디렉셔널 라이트를 조정하여 게임 뷰에서 보일 화면에 대한 기본 설정을 하였습니다. 이번에는 2D 플랫포머 게임 만들기에서 했던 것처럼, 아이템을 생성하고 플레이어 컨트롤을 통해 움직이며, 점수를 획득하는 것을 하겠습니다. 아이템 생성 아이템을 생성할 때에는 프리팹을 사용하는 것이 유용합니다. 하지만 프리팹을 사용해야 할 이유가 없다면 꼭 사용하지 않아도 됩니다. 프리팹을 사용하기 좋은 예시로는, 사용하는 오브젝트가 반복적으로 생성되거나, 해당 오브젝트의 많은 컴포넌트가 들어가 있을 때 등이 있습니다... 2023. 5. 13.
게임개발 중급(22) - 3D 게임 만들기(2) 3D 게임 만들기(2) 저번 시간은 3D 게임 만들기를 시작하기 전, 2D 게임과의 차이점이 존재하는 것 중 씬 화면구성과, 기즈모 그리고 머티리얼에 대해 간단히 알아보았습니다. 이제부터 본격적으로 3D 게임을 한번 만들어 보는 시간을 가지겠습니다. 게임 무대 만들기 우선 게임의 무대가 될 공간을 생성할 것입니다. 2D에서는 씬에서 카메라가 보이는 부분만 오브젝트로 채워서 게임을 꾸밀 수 있었지만, 3D 공간에서는 카메라 뷰의 움직임이 훨씬 자유롭기 때문에 조금 더 복잡하다고 느낄 수 있습니다. 저는 하이어라키 창에서 우클릭으로 생성할 수 있는 기본 3D오브젝트인 Plane으로 바닥을 생성하고, 마찬가지로 Cube를 사용해 벽을 생성해 주겠습니다. 그리고 그 공간에 우리가 사용할 플레이어를 Cylinde.. 2023. 5. 12.
게임개발 중급(21) - 3D 게임 만들기(1) 3D 게임 만들기(1) 이전에 저희는 2D 플랫포머 게임을 만들어 보면서 유니티로 게임 만드는 방법과 감각을 터득했습니다. 추가적으로 유니티에서 활용될 수 있는 다양한 요소를 정리하여 사용할 수 있는 기능의 범위도 더욱 넓어졌습니다. 이제 2D가 아닌 3D 프로젝트를 생성하여 게임을 만드는 것에 대해 이야기를 해볼까 합니다. 3D 프로젝트 기본구조 3D 게임을 만들기 위해선 역시 3D 프로젝트를 생성해야 합니다. 기본 탬플릿으로 유니티 허브에 있는 3D 프로젝트를 생성하면, 위 사진과 같은 화면으로 구성된 프로젝트가 생성됩니다. 화면의 레이아웃은 사용자마다 다를 수 있습니다. 3D 프로젝트를 생성하면 샘플 씬 위에 두가지가 기본적으로 생성됩니다. Main Camera와 Directional Light 입.. 2023. 5. 12.
게임개발 중급(20) - 유니티 엔진 활용(3) 유니티 엔진 활용(3) 지난 시간에는 Directional Light, Audio Source, Particle System 그리고 Prefab에 대해 알아보았습니다. 이번을 마지막으로 유니티에서 사용하기 좋은 컴포넌트 혹은 도구에 대한 이야기를 마무리 짓겠습니다. Animator(애니메이터) Animator 컴포넌트는 게임 오브젝트의 애니메이션을 관리하는 데 사용됩니다. 이를 활용하여 캐릭터나 오브젝트의 움직임에 따라 애니메이션을 변경하거나, 상호작용하는 오브젝트의 애니메이션을 구현할 수 있습니다. Animator는 두 가지 주요 요소로 이루어져 있습니다. 1. Animation Clips Animation Clip은 특정 애니메이션의 시간과 프레임에 대한 정보를 포함합니다. 애니메이션 클립은 캐릭터의.. 2023. 5. 10.
게임개발 중급(19) - 유니티 엔진 활용(2) 유니티 엔진 활용(2) 저번시간은 유니티에서 게임을 만들 때 자주 사용되고, 유용하게 쓰이는 것들에 대해 알아보았습니다. 정확히 Transform, Rigidbody, Collider, Main Camera에 대해 알아보았고, 이번에도 지난시간에 이어서 진행하겠습니다. Directional Light(디렉셔널 라이트) 유니티의 Directional Light는 무한히 떨어지는 평행한 광선을 방출하는 빛으로, 태양이나 달 등의 자연광을 표현할 때 자주 사용됩니다. 3D 프로젝트를 생성하면 기본적으로 Main Camera와 함께 기본생성되는 오브젝트입니다. 씬 뷰에서 Directional Light 오브젝트를 생성하면, 오브젝트를 중심으로 일직선으로 뻗은 빛이 발사되는 것을 확인할 수 있습니다. Direct.. 2023. 5. 8.
게임개발 중급(18) - 유니티 엔진 활용(1) 유니티 엔진 활용(1) 저번 시간을 마지막으로 2D 플랫포머 게임 만들기 챕터를 끝냈습니다. 이번에는 유니티 엔진을 제대로 사용하는 법에 대해서 이야기 하려고 합니다. 유니티 엔진에는 수많은 기능이 탑재되어 있어 전부를 다루지는 못하지만, 가장 많이 쓰이고 유요하게 쓰이는 것들에 대해서 한번 살펴보겠습니다. Transform(트랜스폼) 유니티에서 Transform은 게임 오브젝트의 위치, 회전, 크기 정보를 가지고 있는 컴포넌트입니다. 즉, Transform을 이용해서 게임 오브젝트의 위치, 회전, 크기를 변경할 수 있습니다. Transform은 다음과 같은 속성을 가지고 있습니다. Position: 게임 오브젝트의 위치를 나타내는 Vector3 값입니다. 이 값을 변경하면 게임 오브젝트가 움직입니다. .. 2023. 5. 7.
게임개발 중급(17) - 2D 플랫포머 게임 만들기(총정리) 2D 플랫포머 게임 만들기(총정리) 여태까지 저희는 2D 플랫포머 게임 만들기를 진행하였고, 그 과정에서 다양한 스크립트와 오브젝트 등 많은 것들이 사용되었습니다. 그리고 중간에 이미 만든 것을 변형하기도 하였습니다. 저희가 만약 게임을 만드는 개발자가 아니라 플레이하는 유저라면, 저희가 만든 게임을 보고 만들기 어렵다고 생각하지 않을 것입니다. 하지만 직접 해보면 생각보다 많은 것들이 필요하고 어렵다는 것을 알 수 있습니다. 오늘은 최종적으로 만들어진 결과물을 정리하는 내용으로 마무리 하겠습니다. 하이어라키 창과 프로젝트 창 오브젝트 폴더는 비어있습니다. 저는 유니티 내부에서 제공하는 기본 오브젝트를 하이어라키에 바로 생성하여 사용했기 때문입니다. 마찬가지로 Scenes 폴더에도 현재 사용하고 있는 S.. 2023. 5. 6.