게임 개발/Tower of Rings

8/2 - 몬스터 스프라이트 적용

CastleMouse 2022. 8. 3. 01:39

오늘의 결과

 

오늘은 SPUM으로 몬스터 스프라이트를 만들고 애니메이션과 함께 적용했다. 프리팹을 만들던 도중 노가다성이 짙은 것 같아서 아예 에셋에 달려있는 스크립트를 수정해서 스프라이트의 변경점을 모두 일괄 적용 할 수 있게 만들었다.

 

기본적으로 SPUM 에셋으로 캐릭터를 만들면 프리팹으로 저장할 수 있다. 해당 프리팹은 Resources/SPUM/SPUM_Units에 Unit000, Unit001... 형식으로 저장된다. 여기서 노가다할 것이 생긴다...

    1. 생성된 SPUM 유닛에는 Rect Transform이 붙어있다. 그런데 인게임에서 쓸 캐릭터는 Transform을 쓴다.

    2. Collider와 Rigidbody가 붙어있지 않다.

    3. Monster 컴포넌트도 없다.

그래서 캐릭터를 만들어놓으면 저런것들을 붙여주고 수정해줘야한다. 참고로 원래 몬스터가 18종이었는데 타입 0~2번(일반 몬스터)는 각각 5개씩 따로 종류를 만들어줘서(스탯은 같음) 몬스터가 30종이 생긴 상태이다. 일단 저 30개 노가다 해놓고, 다음에 몬스터 수정점이 생길 때마다 또 같은 작업을 반복해줘야하고... 정말 비효율적이다. 

 

그래서 Resources/SPUM/SPUM_Units 경로에 저장된 유닛정보와 몬스터 오브젝트에 달린 Spum_Prefabs의 정보를 싱크해줄 버튼을 만들었다(인스펙터 창에서 오브젝트에 있는 버튼을 누르면 이름에 대응하는 SPUM유닛을 Resources/SPUM/SPUM_Units 경로에서 찾아서 싱크해준다). 예를들어, "Monster 13"이라는 이름을 가진 프리팹의 Sync 버튼을 누르면 Resources/SPUM/SPUM_Units/unit013의 스프라이트(파츠) 데이터를 가져와 싱크해준다.

SPUM/Script/Editor/SPUM_SpriteList.cs를 보면 CopyDataFromBase()라는 함수가 있는 것을 확인할 수 있는데, 이 함수가 바로 싱크해주는 함수이다. SPUM/Script/Editor/SPUM_SpriteEditor.cs에 GUILayout.Button("Reload Sprites")버튼을 누르면 CopyDataFromBase()함수가 실행되어 싱크되도록 했다.

 

내일부터는 저번주에 그렸던 UI 스프라이트로 게임에서 쓰일 여러 인터페이스를 만들 것이다.

- 인터페이스 만들기