[C#, 유니티] Unity3D_RPG 레벨디자인, 시네머신 그리고 에니메이션

2022. 8. 22. 16:29코딩 2막 <C#개념편>

728x90

저번에는 FPS를 만들어보는 시간으로 유니티의 다양한 옵션드릉ㄹㄹ배웠죠

오늘은 RPG를 만들어보려고 해요

그 첫 시간으로 레벨디자인과 시네머신 

그리고 에니메이션을 배워보겠습니다


레벨디자인

쉽게 말해 레벨디자인은 게임플레이의 난이도의 체감이 플레이어 입장에서

점차 난이도가 있게 디자인하는 방식을 말합니다

 

레벨디자인을 하기위해서 맵구성에 변화를 줄 수 있다

대표적인 맵구성의 방식으로 3D에서는 terrain과 2D에서는 tilemap 그리고 sprite 방식이 있다.

오픈월드 게임에서 주로 사용하는 terrain 방식으로 최적화를 해주었다면 요즘엔

프리팹의 파일을 드래그 앤 드롭 방식으로 레벨디자인을 진행하는 추세이다

tilemap은 terrain방식, sprite는 프리팹의 드래그 앤 드롭 방식으로 생각하면 될것이다

 

반복적인 배치와 적은 용량, 빠른 계산으로 tilemap을 쓸수도 있지만,

원하는 위치와 맵디자인의 자연스러운 형태를 위해서는 sprite방식을 쓴다

하지만 최적화의 부분에서 sprite는 아쉽다. 3D에서도 마찬가지이다

 

결론!! 오픈월드 게임을 만들고자할때

전체적인 맵 형태는 Terrain을 써서 표현하면 좋고

세부적인 맵디자인은 프리팹을 통해 표현하는게 좋겠다



시네머신

RPG는 시점이 다양하게 변한다

지형지물에 따라, 퀘스트에 따라, 몬스터와 전투씬에서의 연출 등

다양한 부분에 있어서 스크립트로 구현할 수 있다

 

그런데 RPG에서 시네머신을 통해 구현을 할 수도 있다

여러가지 시네머신 카메라가 존재하는데 FreeLook카메라를 서브로, 메인카메라 한대로 통제를 하겠습니다

프리룩카메라과 같은 시네머신 패키지를 통해 다양한 연출을 해줄 수 있습니다

 

먼저!! 시네머신 설치방법을 알려주겠습니다(영상참고)


다양한 시네머신 카메라가 있지만

오늘은 free look이라는 시네머신 카메라를 다뤄볼게요

free look카메라를 추가하고 어떤 방식으로 다뤄지는지 설명하겠습니다(영상참고)


[캐릭터 시점이동]

평행한 방향으로 캐릭터가 이동한다는 것은

벡터의 연산값이 Y=0일때(입력에 대해서 카메라 앞 방향에서 y값이 0) 정규화를 해주면 될것같다

이해를 돕기위한 그림


에니메이션

캐릭터의 움직임 구현에 생동감을 불어넣기 위해 약간의 에니메이션을 추가하겠음

걷기(SlowRun), 뛰기(FastRun), 걷다 멈춤(StopToRun), 점프(Jump) 그리고 정지상태(Idle)

idle
jump
run to stop
fast run
slow run

에니메이션을 구현할 때 유니티 캐릭터의 모델링은 복잡하여 자동으로 리깅해주는 믹사모를 이용하는것이 좋다

믹사모에 로그인 후 다운로드한 모델링을 업로드해주어 원하는 모션을 자동리깅해 줄 수 있다

 

Mixamo

 

www.mixamo.com

다운받은 에니메이션들의 리소스를 에니메이터에 추가하여

조건(parameters)을 만들고 조건에 해당될 때 에니메이션이 구현되도록 설계함

에니메이터

[스크립트]


[인스펙터]

그리고 플레이어에 스크립트를 추가해주고 메인카메라를 넣어줍시다

시네마틱 카메라의 컴포넌트입니다

앞서 말했듯이 Free Look 카메라를 썼습니다


[최종 움직임 관찰]

 

에니메이션 반응
movement Full shot

+) 움직일 때 해당 방향을 바라보며 가능 이동(벡터 연산)


공감해주셔서 감사합니다

 

 

728x90