블로그 이미지
한국IT전문학교 게임프로그래밍 2018년 졸업생 / 배우고 익히고 정리하는 곳 무명의 공룡

카테고리

분류 전체보기 (133)
Unity (5)
AR / VR (8)
홀로렌즈2 (2)
Unity 3D 액션 게임 제작 (2)
정리 (9)
소소한 배움 (6)
그외 (7)
비공개 (56)
--이전 프로젝트들-- (0)
Tree-sha (팀 3D) (9)
Icicle Game (2D) (19)
MMD RPG (3D) (9)
Total
Today
Yesterday

달력

« » 2024.12
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

공지사항

마영전, 소울워커, 블소 등 많은 3D 액션 게임이 3인칭 시점의 조작 방식을 가지고 있습니다.


클로저스처럼 횡스크롤 조작을 가진 액션 게임도 있지만 팀 프로젝트도 그렇고 IcicleGame도 그렇고 좌우만 움직이게 하다보니 MMD RPG는 3인칭 시점의 조작 방식으로 만들기로 했습니다.


제가 적용할 3인칭 조작 방식은


1. 캐릭터와 어느정도 떨어진 거리에서 캐릭터를 비춘다.

2. 마우스의 움직임에 따라 카메라가 캐릭터를 중심으로 회전한다.

3. 캐릭터의 조작은 항상 카메라가 보고 있는 방향에 상대적이다.

추가1. 캐릭터를 조작하지 않고 있다면 카메라를 회전 시켜도 캐릭터가 바라보는 방향은 변하지 않는다.

추가2. 카메라가 보는 방향에 상관없이 캐릭터는 모든 방향으로 동일한 속도로 이동한다.


1, 2, 3은 기본적인 3인칭 조작 방법입니다.


추가 부분은 게임에 따라 달라서 따로 붙였습니다. 


추가1의 경우엔 보통 카메라에 에임이 생기는 경우에 카메라와 캐릭터의 방향이 일치하고 아닐 경우엔 조작하지 않을 시 캐릭터가 카메라를 따라가지 않습니다.


추가2는 사이퍼즈의 경우 정면이동과 좌우 이동, 후방 이동이 다 속도가 다름니다. 시점이 정면에 고정되어 옆걸음, 뒷걸음을 적용해서 그런데 저는 그렇지 않고 캐릭터가 항상 이동 방향을 쳐다봅니다.


나중에 스킬을 구현하면 특정 상황에 따라 바뀔 수도 있는데 일반적인 상태에선 위와 같습니다.




시작에 앞서 hierarchy 창에 배치를 아래와 같이 해줍니다.



CameraParent라는 이름으로 빈 오브젝트를 부모로 두고 그 아래 메인 카메라를 둡니다. 메인카메라는 Z좌표만 뒤로 적당히 빼줍니다.


모델도 미리 넣어두면 좋습니다. 기본 캡슐은 회전이 잘 눈에 들어오지 않거든요. 이 카테고리에선 MMD 모델을 사용하고 있으므로 미쿠 MMD 모델을 썼습니다. 추가로 걷거나 달리는 애니메이션 정도까지는 같이 준비해 두시면 더 좋습니다.


그리고 위처럼 계층구조로 만들어 준 다음 캐릭터의 움직임을 CharacterController로 제어 할 것이기에 PlayerCharacter에 CharacterController 컴포넌트 넣어주고 제어를 할 스크립트를 포함시켜줍니다.

이 스크립트는 앞으로 점점 채워 나갈겁니다.


이렇게 모델과 제어를 나눈 이유는 카메라 방향에 따라 조작이 상대적으로 이루어지고, 거기에서 모델이 이동 방향으로 회전을 하기 때문입니다.

즉, 조작은 카메라 방향의 영향만 받지만 모델은 카메라 방향과 조작 두개의 영향을 받고 회전하기 때문에 따로 나누었습니다.

만약 사이퍼즈처럼 모델이 조작에는 회전하지 않는다면 하나에 해도 되겠지요.




둘 다 되었다면 대충 이런 모습이 되었을겁니다.


이제 PlayerCharacter에 포함시킨 스크립트를 작성하여 움직이게 해봅시다.



코드엔 최대한 주석을 달아 놓았고 가능한 필요한 것만 적었기에 아마 이해엔 별 어려움이 없으리라 생각합니다.


SerializeField를 이용하면 굳이 public을 붙이지 않아도 인스펙터 창으로 접근이 가능합니다.


그리고 카메라나 모델의 경우엔 MainCamera 접근과 계층구조의 접근 방식을 이용하면 별도로 Find나 인스펙터 창에 등록시키지 않아도 사용이 가능합니다.


인스펙터 창이 지저분해지면 뒤로 갈 수록 보기도 힘들어지고 다른데서 사용하려 해도 일일히 연결시켜줘야 하는 불편함이 있으니 가능하면 최소화 해주는 편이 좋습니다.



이 스크립트를 PlayerCharacter 오브젝트에 넣어주면



이런 식으로 조작이 가능합니다.



현재 코드에는 중력과 경사로 보정이 추가로 있는데 이는 이후 점프나 맵이 생기면 확인이 가능합니다.


점프는 유니티짱의 그 큰 시전 동작과 마무리 동작으로 인해 저는 그에 맞춰 선딜 후딜도 포함시켰습니다만 액션 게임에는 어울리지 않는 딜레이라 생각해 추후 변경할 예정이라 별도로 글을 작성하지는 않겠습니다.

'MMD RPG (3D) > 진행' 카테고리의 다른 글

MMD4Mecanim  (0) 2018.04.06
예정  (0) 2018.04.05
진행상황 동영상  (2) 2018.04.03
유니티3D로 MMD 사용하기 2  (6) 2018.03.04
MMD란? 유니티3D로 MMD 사용하기 1  (1) 2018.03.04
Posted by 무명의 공룡
, |