유니티5 액션 RPG 전투 입문

유니티5로 클릭 앤 무브 방식의 액션 RPG 전투를 만들어 보세요

디아블로 같은 액션 RPG 전투는 어떤 식으로 만들까요?

안녕하세요, 저는 <유니티 5 액션 RPG 전투 입문>을 제작한 김웅남입니다.

저의 초급 강좌들인 <동영상 강좌로 배우는 유니티5>와 <초보자를 위한 유니티 C# 스크립트 강좌>, 그리고 <유니티 2D 슈팅 게임 개발 특강>을 다 보셨다면, 이제 다음 단계로 나아가야 할 시간입니다.

이번에 출시한 <유니티5 액션 RPG 전투 입문>은 클릭 앤 무브(Click And Move) 방식의 액션 RPG 전투를 구현하기 위해 기본적으로 알아야 할 핵심 내용들을 상세하게 다루고 있습니다. 마우스 클릭을 통해 캐릭터 이동을 구현하는 방법으로부터, 몬스터와 플레이어 캐릭터의 유한 상태 기계(FSM)를 만드는 방법, 상대와의 거리에 따라 이동에서 공격으로 자동 전환되게 하는 방법, 몬스터 머리 위를 따라 다니는 HP 게이지 바를 만드는 방법 등, 초보자 분들이 다음 단계로 넘어가기 위해 가장 궁금해 하시는 많은 내용들을 상세하게 설명해 드립니다.

유니티 초급 단계를 지나, 이제 본격적인 게임 개발에 도전하고 싶으신가요? 그렇다면 <유니티5 액션 RPG 전투 입문>으로 시작하시기 바랍니다. 이 강좌를 끝내고 나신 뒤에는 유니티 초보자라는 이야기는 더 이상 듣지 않게 되실 겁니다. 그럼 지금부터 시작해 보세요!

강사 프로필 보기

Module #1 마우스 클릭 이동 배우기

마우스 클릭 이동을 위해서는 화면 좌표를 월드 좌표로 변환하는 방법을 배우셔야 합니다. 우리가 3D 공간에서 캐릭터를 이동시키려고 마우스 클릭을 할 때, 실제로는 2차원 평면 화면을 클릭하고 있는 것입니다. 여기에서는 레이캐스트를 이용하여 2차원 좌표를 3차원 좌표로 변환하는 방법을 상세하게 알려 드립니다.

m1

Module #2 유한 상태 기계(FSM) 만들기

복잡한 게임을 만들기 위해서는 우리가 캐릭터나 몬스터의 행동에 대해 일일이 조건문을 이용하여 조건 판단을 하는 식으로 작업할 수 없습니다. 대신 해당 캐릭터의 상태를 정의하고, 각 상태에서 어떤 행동을 하며, 각각의 상태는 어떤 조건에 의해 변하게 되는가를 지정해 주면 됩니다. 이를 위해 유한 상태 기계(FSM)의 개념을 상세하게 알려 드리고, 실제 FSM을 만들어 캐릭터와 몬스터의 행동을 제어해 보겠습니다.

m2

Module #3 부드러운 회전과 부드러운 이동

이제 마우스 클릭 지점으로 캐릭터를 이동시켜야 합니다. 이 때 자연스럽게 회전하고 이동하기 위해서는 어떤 로테이션 값을 가져야 하는 지를 계산하는 것 뿐 아니라, 매 프레임당 얼마나 조금씩 회전해야 자연스럽게 보일 지를 계산해 내야 합니다. 다행히도 유니티는 이런 과정을 아주 쉽게 처리할 수 있는 명령어들을 제공하고 있습니다.

m3

Module #4 자동 공격하는 몬스터 만들기

몬스터 역시 FSM을 구현하여, 자동으로 공격과 추적 등을 판단하고 수행할 수 있도록 해야 합니다. 여기에서는 몬스터가 플레이어와의 거리를 체크하여, 이에 따라 스스로 추적과 공격, 그리고 재 추적 등을 행할 수 있도록 하는 방법을 상세하게 다루게 됩니다. 또한 정해진 시간 차를 두고 자동으로 공격을 반복하게 하는 기법 등도 상세히 알려 드립니다.

m4

Module #5 캐릭터 파라미터 관리하기

플레이어와 몬스터가 공방을 벌일 때, 내부적으로는 다양한 수치 계산이 이루어집니다. 이를 위해 플레이어와 몬스터가 공통적으로 사용하는 파라미터들을 담은 "캐릭터 파라미터" 부모 클래스를 만들고, 이를 몬스터와 플레이어 캐릭터 파라미터 클래스들이 각각 상속하도록 해 보겠습니다. 또한 가상함수와 오버라이드 함수를 사용하는 방법도 상세히 알려 드립니다.

m5

Module #6 이벤트(Event) 이해하기

게임을 하는 동안에는 다양한 이벤트들이 일어납니다. 이 때 특정한 이벤트가 발생하면, 그에 따라 미리 등록해 둔 여러 개의 함수들이 동시에 실행되도록 하는 식으로 많은 게임 오브젝트들이 특정한 사건에 대해 각자 다른 방식으로 반응하도록 할 수 있습니다. 여기에서는 유니티 이벤트를 사용하는 방법과 함께, 캐릭터 애니메이션의 특정 프레임에 이벤트 함수를 등록하는 방법도 배우게 됩니다.

m6

Module #7 UI 만들기

게임에 등장하는 많은 몬스터들은 각자 자신의 잔여 HP를 표시하기 위한 게이지 바를 가지고 있습니다. 여기에서는 유니티 UI를 이용하여 이들 게이지 바들이 몬스터 머리 위를 자연스럽게 따라 다니도록 하는 방법을 알려 드립니다. 또한 몬스터의 HP 값이 줄어들 때마다 게이지 바도 자동으로 줄어들게 하는 법과 플레이어 캐릭터의 헤드 업 디스플레이(HUD) 만드는 법도 다루어 보겠습니다.

m7

Module #8 리스폰 영역 만들기

필드 곳곳에 특정한 종류의 몬스터들이 자동으로 생성되도록 하는 '리스폰 영역' 만드는 법을 다룹니다. 리스폰 영역 마다 서로 다른 종류의 몬스터들을 등록하고, 이들 몬스터들이 플레이어의 접근시 자동으로 생성되도록 해 보겠습니다. 또한, 전투 중 모든 몬스터들이 사망하면, 일정 시간 후에 죽은 몬스터들을 재활용하여 다시 리스폰 시키는 방법도 다루어 봅니다.

m8

Module #9 엑셀 파라미터 불러 오기

게임 속에 등장하는 수 많은 종류의 몬스터들의 파라미터 값들을 유니티 에디터에서 일일이 입력하는 것은 비효율적인 일입니다. 여기에서는 게임 기획자들이 엑셀로 작업한 몬스터 파라미터 데이터를 XML 파일로 변환한 뒤, XML 파싱을 통해 실제 게임 몬스터들에게 자동으로 적용하는 방법을 다루어 보겠습니다.

m9

강좌에 수록된 내용

본 강좌는 81개의 동영상 파일로 이루어져 있으며, 전체 강의 시간은 약 4시간입니다. 한번 구입하시면 기간 제한 없이 언제든지 반복해서 보실 수 있습니다.

  • 유니티 다운로드 - 강의에 사용된 버전
  • 새 프로젝트 만들기/터레인 패키지 불러 오기/작업 환경 정리하기
  • 터레인에 텍스춰 입히기
  • 캐릭터 에셋 다운로드
  • 플레이어 캐릭터 만들기
  • 애니메이터 컨트롤러 만들기
  • 클릭 매니저 스크립트 만들기
  • 마우스 클릭 이동의 원리
  • 마우스 클릭 지점의 좌표 알아내기
  • 레이캐스트를 이용한 마우스 클릭 지점 (월드) 좌표 알아내기
  • 마우스 클릭 지점으로 캐릭터 위치 옮기기
  • 유한 상태 기계(FSM) 개념 이해하기
  • 플레이어 FSM 스크립트 만들기
  • 격투 애니메이션 다운로드
  • 애니메이터 컨트롤러에 애니메이션 클립 등록
  • PlayerAni 스크립트 만들기
  • PlayerFSM에서 애니메이션 변경하기
  • ChangeState 함수로 상태 변경하기
  • MoveTo 함수로 플레이어를 목적지로 보내기
  • Quaternion.LookRotation 함수를 이용한 회전
  • 부드러운 회전 구현하기
  • 캐릭터 이동 구현하기
  • 각 상태에 대응하는 State 함수 만들기
  • 플레이어 캐릭터를 따라 다니는 카메라
  • 몬스터 제작을 위한 에셋 다운로드
  • 몬스터에 충돌체 붙이기
  • 적 공격을 위한 함수 만들기
  • 적을 향해 이동한 뒤, 공격 동작하기
  • 어택 타이머를 이용한 자동 공격 구현
  • 애니메이션 이벤트 만들기
  • 몬스터 유한 상태 기계 만들기
  • 몬스터 애니메이션 스크립트 만들기
  • 몬스터 상태 변경 함수 만들기
  • 몬스터 추적 상태 만들기
  • 플레이어를 향해 돌아서는 몬스터
  • 몬스터를 플레이어 위치까지 이동시키기
  • 몬스터 자동 공격 구현
  • 몬스터 타격 이펙트 만들기
  • 캐릭터 파라미터 클래스 만들기
  • 몬스터 파라미터 클래스 만들기
  • 플레이어 파라미터 클래스 만들기
  • 공격과 방어시의 파라미터 변화 구현하기
  • 데미지 계산 및 반영하기
  • 이벤트란 무엇인가?
  • 몬스터 사망시의 이벤트 처리
  • 몬스터 사망시 플레이어 공격 중단하기
  • 몬스터 공격 타이밍에 맞춘 데미지 처리
  • 플레이어 사망 처리
  • 몬스터 HP 표시 바 만들기
  • 카메라에 빌보드 스크립트 붙이기
  • 게이지 바 사이즈 자동 변경하기
  • 플레이어의 HUD 만들기
  • UI 매니저 만들기
  • 사운드 매니저 만들기
  • 게임 사운드 플레이하기
  • 몬스터 리스폰 영역 만들기
  • 리스폰 오브젝트 스크립트 만들기
  • 스폰 지점을 만들어 리스트에 저장하기
  • 몬스터를 만들어 배열에 저장하기
  • 몬스터 리스폰시키기
  • 몬스터 사망시 월드에서 제거하기
  • 몬스터 모두 사망시 다시 리스폰하기
  • 몬스터 선택 표시 만들기
  • 게임 매니저 만들기
  • 선택된 몬스터만 선택 표시 활성화하기
  • 몬스터의 겹침현상 회피하기
  • 몬스터 리스폰 순간 상태 초기화하기
  • 코인 만들기
  • 코인 스크립트 작성하기
  • 오브젝트 매니저 만들기
  • 코인을 원하는 위치에 생성하기
  • 사용한 코인을 월드에서 제거하기
  • XML 데이터 준비하기
  • XML 매니저 만들기
  • XML로부터 파라미터 값 읽어 오기
  • XML에서 읽은 파라미터를 몬스터에 적용하기
  • 또 다른 종류의 몬스터 만들기
  • 게임 오버 UI 애니메이션 만들기
  • 게임 오버 UI 스크립트 만들기
  • 플레이어가 사망하면 공격을 멈추는 몬스터 구현
  • 강의를 마치며

이 강좌를 들으실 수 있는 분들

본 강좌는 BatStudio가 제작하였으며, Gumroad.com 을 통해 판매됩니다. Gumroad.com 은 미국 샌프란시스코에 소재하고 있습니다.
© COPYRIGHT 2015 BatStudio|이메일 문의: batparker@gmail.com