ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 스파르타 최종 프로젝트 33일차
    게임 개발기록 2024. 7. 29. 22:22

    1. 상점 만들기

    영웅기능을 구현 하기에 앞서 할 것이 조금 많다. 그래서 머리가 복잡해지기 전에 하나하나 차근차근 해보기로 한다.

    그래서 상점부터 만들었다. 

     

    상점에서 일반뽑기, 고급뽑기 등을 만들고 알맞는 확률로 영웅의 데이터를 넘겨주는 작업을 한다.

     

    그럴려면 영웅들의 List를 갖고 있어야 한다. 

    나는 딕셔너리를 활용 했다. 

     

    키값으로 영웅등급을 넣고 영웅리스트들을 넣었다.

    그리고 전설영웅이 뽑혔으면 전설영웅리스트들에서 랜덤으로 뿌리는 느낌으로 했다. 

     

     

    이런 식으로 처음에 상점 뽑기UI를 만들었는데 기획 자체가 재료들 10개씩 필요하게 만들거라서 

     

    이런 느낌으로 수정 했다. 

     

    그리고 스크립트 만들어 줘서 저 버튼 누르면 알맞는 곳에 랜덤으로 영웅 넘기게 해주면 된다. 

    그전에 획득 한 영웅을 표시 해주는 UI를 만들어 주자.

     

    이렇게 만들어 봤다. 디자인 작업을 좀 더 많이 해야겠지만, 일단 영웅을 얻으면 표시창에 나오게 하는 작업까지 해봤다. 

     

    나중에 구매조건을 추가 해주는 작업을 해야 한다. 

    일단 1단계 작업은 여기서 마치고 이제 구매한 영웅의 Data를 받아서 Slot을 생성하게 만들자.

     

     

     

     

    2.영웅슬롯 생성 되게 하기

    그 다음으론 획득한 영웅의 슬롯이 생성 되게 해야 한다. 

    나중에 전부 디자인 새로 할 것이다.

     

    이렇게 UI를 만들어 주고 Data를 받아온 것으로 초기화를 해주면 된다. 

     

    영웅레벨업은 같은 영웅을 얻게 되면 오르게 할 것이다. 그래서 Item과 비슷한 형식으로 구현이 되었다. Inventory에 영웅가방을 만들어 놓고, 가방에 넣으면서 슬롯을 생성하게 하고 Action을 연결 해줬다. 

    드디어 버튼의 모든 기능들이 추가 된 모습이다.

     

    이렇게까지 해서 기본적인 기능까지는 마무리를 했다. 이제 영웅을 어떻게 활용할 것인지에 대한 기획을 마무리 하고 적용 하면 될 것 같다.

     

     

     

     

    3.원정대 기능 만들기

    나는 영웅을 이렇게 하기로 했다. 영웅들로 팀을 편성을 한다. 이 팀은 각 층에 랜덤한 확률로 몬스터가 소환 됐을 경우에 각 층이 원정대를 소환 한다. 

     

    이 때 원정대는 총 5개까지 등록이 가능하다. 

     

    저 하얀 슬롯에 영웅들을 등록 할 수 있다.

     

    그래서 이렇게 원정대 UI부터 만들어 주고 원정대를 등록 해제 하는 것부터 만들어 주자. 

     

    일단 지금 Json으로 직렬화가 가능한 Data를 넘겨주면 혹시 똑같아지나 하는 마음에 직렬화 가능한 Data만 넘기게 해서 슬롯들을 설정 하게 했다. 

     

    약간 Data에 Fnuc 등록 해두고, 이 Data를 갖고 있는 Slot이 Func에 본인을 리턴 시키는 것으로 함수를 만들어서 이 Slot을 받아와서 이 Slot에 Icon과 등등을 사용 해서 초기화가 되게 했다. 

    근데 내 생각대로 같은 참조면 의미가 있는 행동이였는데, 같은 참조가 안 되면 다시 바꿔야 한다. 

     

    아무튼 영웅목록을 클릭 하게 되면 저기 슬롯에 데이터를 넣어주게 했고, 저 슬롯을 클릭 하면 슬롯을 비우게 하게 함으로써 슬롯들을 설정하게 만들어 봤다. 

     

    나중에 아웃라인 같은 것들로 등록 된 영웅들은 다르게 표시 되게 만들어 주고, 설정을 눌러야 설정이 가능하게 만들어지게 수정을 해줄 것이다. 

     

    이제 이 원정대 등록 된 영웅들의 수만큼 영웅유닛을 스폰하게 만들면 된다. 

     

    저 슬롯의 개수만큼 반복문을 돌리면 되는데, 나는 처음에 만약 슬롯이 빈칸이면 return으로 함수를 바로 멈추게 하려고 했다. 그런데 생각을 해보니 사람들이 대부분 슬롯을 꽉 채우는 것도 아니고, 첫 칸부터 채우지 않을 사람이 분명 있을 거라고 생각 해서 슬롯이 비었더라도 반복문은 5번 다 돌리게 했다. 

     

    일단 반복문을 돌리기 전에 영웅 프리펩을 만들어 주고,  오브젝트풀 작업을 해준다. 

    그리고 영웅을 소환 할 때 오브젝트풀로 꺼내오고 여러가지 초기화 작업을 해주면 된다.

    영웅은 땅을 파지 않고 몬스터만 공격 하게 함

     

    작업을 마치고, 소환 하는 함수도 만들어서 원정대를 소환 하게 했다. 

    현재 애니메이션 작업을 해주지 않아서 기본 애니메이션으로 소환이 되는데, 저것들은 영웅들이다. 나중에 애니메이션 작업 해줘야 한다.

     

    이제 몬스터를 만들고, 몬스터가 랜덤으로 생성이 되게 한 다음에 몬스터가 생성이 되면 몬스터가 생성 된 곳에 원정대 소환 하는 이 함수를 사용 해서 몬스터가 생성 된 곳에 원정대가 소환 되게 해주면 된다. 

     

     

     

     

    4.몬스터 기능 추가하기

    현재 블록은 부서지면 재생성이 된다. 이것을 활용해서 재생성이 될 때 랜덤으로 몬스터로 생성이 되게 했다. 

    BlockType이라는 enum에 Monster를 추가해서 이것을 활용하게 했다. 

     

    유닛은 블록과 충돌 했을 때 Monster일 경우에 공격을 수행 하지 않고, 넉백을 당하게 된다. 

    영웅은 몬스터를 공격 한다. 

     

    기본적인 기능을 먼저 추가하려고  지금은 몬스터가 랜덤으로 나오게 하는 로직을 추가 하지 않고 그냥 바로 소환 되게 했는데 나중에 몬스터를 종류별로 소환 하게 하고 각각 스텟이 다르게 적용 되게 하는 것을 추가 할 것이다. 

     

    몬스터가 재생성이 되게 해주는 것을 추가 해주고 유닛도 몬스터와 충돌 판정이 되는 것을 추가 해줬다. 

    그리고 몬스터로 재생성이 될 때 원정대를 소환 하는 것을 사용 하게 해줌으로써 몬스터가 소환 되면 원정대가 소환 되게 해줬다. 

     

    이렇게까지 해서 오늘은 마무리 해야겠다. 너무 피곤하다. 

    저장은 내일 추가..

     

    아무튼 이제 프로젝트의 기능 추가가 끝이 보인다. 이제 디테일 작업만 해주면 될 것 같다. 

     

     

     

    내일목표 : 영웅저장 추가, 폴리싱 작업

     

     

     

     

Designed by Tistory.