이번에는 3D로 RPG를 만들었다.

게임다운 게임을 만든건 아니지만 기능구현을 목적으로 프레임을 만들어본다는 마인드로 작업하였다.


타이틀씬 로고 및 설정창

로고가 사라지고 난 이후부터 음악과 화면이 뜨게했다. 

설정창은 메뉴를 닫으면 옵션값을 json으로 저장하고 실제 게임씬이 실행될때 json을 읽어 값을 그대로 load한다.



맵 및 미니맵

미니맵은 만들어둔 이미지를 쓰면 더 깔끔할것 같지만 따로 준비하지는 않았고,

미니맵용 카메라를 하나 만들어 카메라가 보는 화면을 렌더텍스쳐로 쏴서 그걸 그대로 보이게했다.

맵은 전체맵을 미리찍어 보여준 후 캐릭터가 실제 이동거리 비율에 맞게 이동하게 하였다.



퀘스트

퀘스트는 퀘스트ID에 따라 다른 퀘스트를 받을 수 있게 하였고,

씬전환시 유저데이터에 가진 퀘스트 정보를 같이 저장하고 씬전환후 로드하여 계속 유지하도록 했다.



스킬

원래는 RPG 컨셉으로 스킬트리 찍고 공격스킬들을 넣으려고 했었는데 

기본 애니메이션도 마음에 안들고 괜찮은 애니메이션도 찾기가 힘들어서 그냥 롤의 스펠을 만들어보자해서 구현했다.

대신 스킬포인트 2개로 스킬을 찍을 수 있게 메이플스토리같은 틀을 만들어보았다.



대화창 및 상점

대화내용은 엑셀로 작업하여 csv파일로 뽑아낸 후 유니티에서 읽어서 파싱하였다.

상점 또한 마찬가지로 아이템 리스트를 csv파일에서 읽어들여 자동으로 생성하게하였다.



인벤토리 및 스탯

인벤토리는 직접 구현하려했으나 에셋을 다운받아 사용하였고 에셋을 분석하여 원하는대로 작동하게 바꾸었다.

스탯창은 직접만들어 실시간으로 캐릭터의 정보를 받아오게끔 하였다.



낮밤 라이트변화

기존의 디렉셔널 라이트를 시간에따라 색상과 각도가 바뀌게하여 밤과 낮을 표현하였다.



카메라 무브

기존 rpg와 마찬가지로 회전하고싶어서 그대로 만들었다.

마우스의 x값과 y값을 받아와서 삼각함수를 통해 자연스럽게 이동한다.



몬스터 AI

몬스터에게 가까이가면 몬스터가 쫓아오고 몬스터와 붙으면 몬스터가 공격한다.

일정거리가 벌어지면 다시 몬스터가 돌아가며 죽고나면 몬스터가 다시 리젠된다.

몬스터에게 유저를 인식하는 콜라이더를 추가하여 범위안에 유저가 들어오면 상태값을 변경하여 행동을 변경하였다.



아이템 획득 및 사용

Alt키를 눌러서 아이템을 주을수있고 인벤토리에서 아이템 우클릭시 사용이 가능하다.




코드는 깃 사용법 연습할겸 깃헙에 올려놨으니 궁금하시면 보시면 될듯.

https://github.com/kiwiade/unity_3d_rpg



완성작은 아니라 좀 허접하지만 그래도 플레이해보시고 싶으신 분 계시면 아래 링크에서 다운로드

https://drive.google.com/file/d/1ofp7Dj8nnP6e9LHb9aLEhkgLqOlF1Vmb/view

Posted by misty_
,