유니티

유니티 무작정 시작하기 - 2. 유튜브 영상으로 간단한 게임 제작 (상)

모나오랭 2024. 8. 10. 23:06

처음 유니티를 만져보고 다시 일주일이 흘렀다(백준의 유혹을 뿌리칠 수가 없... 사실 좀 현타가 와서 방학을 즐겼다. 그래도 백준 골드3을 달성해서 뿌듯하다. 담주 안에 골드2 예정). 어떻게 시작할 지 막막하기에 게임 개발 동아리 경험이 있던 친구에게 물어봤는데 그냥 유튜브에 공개된 유니티 제작 영상을 보면서 무작정 따라 만들어보라고 하더라. 그래서 유튜브 영상을 켰다. 계속 겉으로 훑어보기만 했던 영상으로 정했다. 그래도 한국어 영상을 보는 게 처음 공부할 때 더 도움이 되지 않겠나 싶다. 2D를 하라는 친구의 조언으로, 마침 나도 2D 게임을 만들어보고 싶었기에 영상을 보기 시작했다. 아래의 영상을 보면서 공부를 시작했다.

 

https://www.youtube.com/watch?v=rJE6bhVUNhk&t=18889s

 


 

 

 

 

구글에서 오픈 소스를 무료로 제공하는 사이트에서 배경화면, 골드, 캐릭터, 하트 마나 바, 재활용 쓰레기 소스들을 다운 받아 Assets의 Sprites 폴더에 저장했다. 무료 소스는 원하는 소스 분야를 검색창에 입력하고 옆에 site:opengameart.org를 같이 입력하면 된다. 그럼 원하는 소스를 해당 사이트에 들어가 다운받으면 된다. 

 

 

 

이렇게 하트 마나 바를 구하기 위해 사이트에 들어가면, 하단의 File(s) 밑의 파일을 다운받으면 된다.

캐릭터의 경우, 정면 후면 측면 움직이는 컷 등 여러 개를 한 번에 다운받을 수 있는데, 유니티 게임 스크린에서 이를 애니메이터 효과를 적용하기 위해서 애니메이션 효과에 적합한 캐릭터 이미지를 잘라서 모두 선택에 hierarchy에 드래그하면 된다.

 

 

이후 window -> animation 을 들어가서 애니메이션을 재생해볼 수 있다. samples 옆의 숫자는 속도를 조정한다. 숫자가 클 수록 애니메이션이 빠르게 움직인다.

 

배경화면을 드래곤 플라이트 게임처럼 캐릭터가 앞으로 전진하는 효과를 주기 위해 배경 2개를 움직이게 만들면 된다는 점이 신기했다. 간단한 원리로 게임 상에서 여러 효과를 나타낼 수 있다는 점을 숙지해야겠다.

 

 

씬 스크린에서 배경 2개를 이어붙인 모습인데, 소스 코드에 배경을 아래로 움직이게 한 후, 화면을 벗어나면 다시 화면 위로 옮겨서, 끊임없이 배경이 왔다갔다 하게 만들어 캐릭터가 앞으로 이동하는 느낌을 줄 수 있다.

그리고 소스 코드를 통해 방향키로 캐릭터를 움직이게 하면 된다.

 

 

좌우 키만으로 캐릭터를 움직이게 하는 코드다. Vector, Input, keyCode 모두 생소한 변수고, moveSpeed 변수의 역할도 아직은 어색하다. 변수를 하나하나 만들어줘야 쉽게 위치 변환을 할 수 있는 것 같다. 이것도 적응해야겠다.

 

선풍기 + 과자 먹는 asmr이 나와버려따...ㅋ

 

요런 느낌. 실제로 모바일 게임을 제작할 때 이런 과정으로 만들었다고 생각하니 신기했다. 영상을 보면서 배우는데 흥미가 생겨 계속 보게 되었다. 7월부터 진작에 시작할걸 그랬다... 이번에 확실히 배워서 나만의 프로젝트를 조금씩 만들어가야겠다.

 

캐릭터를 움직이는 효과를 부여하는 방법까진 예상이 됐다. 하지만 캐릭터가 게임 스크린 내부에서만 움직일 수 있게 하는 방법은 도무지 추측할 수가 없었다. component에서 collider 2D를 추가하면 소스들이 서로 만나면 더 이상 그 방향으로 움직일 수 없게 효과를 넣을 수 있었다. 그리고 캐릭터에도 collider 2D를 추가해 캐릭터 자체의 박스 범위를 지정하면 된다.

 

 

Left Wall과 Right Wall 오브젝트를 추가하여 collider component를 추가한 후, 그 범위를 inspector에서 조정하면 된다. 이 때 벽 오브젝트를 추가할 땐 creat empty를 선택하면 된다.

 


 

 

유니티 프로그램이 정말 편한 점이, Assets에 게임에 필요한 소스들을 다루는 폴더, C# 코드 폴더, 이미지 폴더 등을 이용해 가시적으로 쉽게 저장이 가능하고, 소스마다 코드를 부여하여 움직임, 효과 등을 정의할 수 있다. 한 파일에 스파게티처럼 쭉 코드를 작성하는 것이 아닌, 소스마다 코드 파일을 부여해 하나씩 코드를 작성하면 된다. 간결하고 폴더 정리가 용이해 더 복잡한 과정을 다룰 때 헷갈리는 경우가 줄어들 것이다. 왜 게임 제작은 유니티라고 하는지 확실히 이해가 간다. 다행히도 C와 C++에 대해 어느 정도 지식이 있기에 소스 코드를 작성하는 과정은 쉽게 배우는 중이다. 내장된 함수와 변수만 익숙해지면 될 것 같다.

 

다음은 영상에 따라 미사일, 적 등의 부가적인 요소들을 만드는 과정을 학습하고 적어볼 생각이다.