언리얼엔진4에서는 게임개발자들이 자신만의 독창적인 콘텐츠를 만들어낼 수 있도록 다양한 툴과 리소스들을 제공하고있어요. 특히나 최근엔 모바일게임시장에서도 언리얼엔진4를 이용해서 개발하는 사례가 늘고있는데요~ 이번 시간에는 언리얼엔진4를 이용해서 간단한 슈팅게임을 만들어보도록 하겠습니다.
슈팅게임이란 무엇인가요?
슈팅게임은 말 그대로 총을 쏘는 게임입니다. 우리가 어렸을 때 많이 했던 1945같은 비행기 대전게임 혹은 포트리스 같은 탱크대전게임 등이 대표적인 슈팅게임이죠. 물론 이밖에도 여러가지 종류의 슈팅게임이 존재하는데요, 간단하게 설명하면 플레이어가 조작하는 캐릭터가 적에게 총알을 쏴서 맞추는 게임이에요.
그럼 어떤 방식으로 게임을 만드나요?
일단 먼저 맵을 제작해야되는데요, 아래 그림처럼 바닥 오브젝트를 만들고 배경색을 설정해줍니다. 그리고 나서 주인공 캐릭터를 생성하기 위해 Character 컴포넌트를 가져옵니다. (아래그림 참조)
Character 컴포넌트 안에는 무기(총알) 및 체력바등 각종 애니메이션 효과를 넣을 수 있는 Customize 컴포넌트가 들어있습니다. 또한 이렇게 만든 캐릭터를 움직일 수 있게 해주는 Movement 컴포넌트도 같이 가져올 수 있죠. 이제 본격적으로 게임을 만들기 위해서 스크립트를 만들어야 되는데요, 이때 쓰이는 언어가 바로 C++ 입니다. 하지만 처음부터 C++언어를 배우는건 쉽지 않기 때문에 유니티 엔진 자체에서 제공하는 Script Editor를 활용하도록 하겠습니다.
스크립트 에디터란 무엇인가요?
유니티 엔진자체에서 제공하는 스크립터 편집기로 코드를 쉽게 입력할 수 있고 디버깅또한 편리하게 할 수 있답니다. 우선 UnityEngine.cs 파일을 열어보면 위 사진처럼 구성되어있는걸 알 수 있는데요, 왼쪽 상단에 보이는 MainWindow라는 이름의 클래스를 상속받아서 오른쪽 하단에 위치한 GameObjects 라는 클래스를 만들었습니다. 즉, 지금부터는 저 GameObjects클래스를 가지고 게임을 만드는 거죠.
이제 아까 가져온 Character 컴포넌트를 수정해볼텐데요, 현재 상태로는 아무런 동작도 하지 않는 빈 객체이기 때문에 void Update() 함수안에 다음과 같이 변수를 선언해주고 값을 넣어주면 됩니다.
character.GetComponent<Rigidbody>().AddForce(Vector3.forward * 10f);
이렇게 하면 앞으로 이동하면서 적을 공격하겠죠? 자 그러면 마지막으로 적의 움직임을 구현해볼까요? 적은 미사일을 발사했을 때 일정시간동안 움직이지 않고 가만히 있어야 합니다. 그러기 위해서는 충돌처리를 해야되겠죠? 그래서 일단 Vector3.up이라는 벡터값을 만들어서 초기화 시켜준 후 0.5초 동안 대기시켜주었습니다. 그런다음 다시 AddForce함수를 호출해서 미사일을 발사했는데요, 만약 화면 밖으로 나가면 폭발하도록 했습니다. 어때요 참 쉽죠?
이번 시간에는 간단히 슈팅게임을 만들어보았는데요, 어떠셨나요? 어렵지 않으셨죠? 여러분도 충분히 하실 수 있으니 겁먹지 말고 도전해보세요!