ABOUT ME

-

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

    1.클릭 시 유닛 생성 마무리

    클릭 하면 유닛이 생성 됐는데 생성 된 유닛들의 움직임의 이상함이 있었다.

     

    위 동영상처럼 유닛들이 순식간에 이동을 해버리는 문제였다. 

     

    문제의 원인은 그것이었다. 나는 화면 터치를 Ray를 통해서 구현을 하여서 Ray를 받을 충돌영역을 설정을 했어야 했다. 

     

    이런 식으로 맵 중앙에 충돌영역을 크게 설정 하였는데, 이 때 생성 되는 유닛들이 이 영역 안에서 소환이 되어서 충돌영역 바깥으로 나가기 위해 순식간에 이동을 하는 것이었다. 

     

    나는 초반에 Project 세팅을 통해서 이 터치영역을 충돌이 안 되게끔 하였는데, 갑자기 설정이 풀려 있어서 오류를 찾기 더 힘들었었다. 

     

    아무튼 그래서 이 충돌영역을 isTrigger를 해도 되지만, 나는 projectsetting을 통해서 충돌을 하지 않게끔 바꿈으로써 문제를 해결 할 수 있었다. 

    터치영역은 다른 오브젝트들과 충돌이 되지 않게 설정 했다.

     

    문제들이 많았을 것 같았지만 이것만 수정을 하고 나니 정상적으로 작동을 했다.

     

    이렇게 해서 화면 터치를 하였을 때 터치한 해당 영역에 가까운 흙에다가 유닛이 생성 되게끔 만들 수 있게 했다.

    이제 디테일적인 부분만 고쳐주면 된다. 층마다 Ray를 쏠 블록 위치들을 잡아주고, 이 Ray를 쏘게 할 터치영역들도 잡아주고 플레이어 유닛 움직임에 대한 디테일적인 것만 수정 해주면 될 것 같다. 

     

    ==

    층마다 Ray를 쏠 위치들을 잡아주었다. 

    시작 땅
    생성 하는 땅

     

    클릭을 했을 시에 클릭한 영역에 있는 Ray를 쏘고 충돌 된 곳에서 유닛이 생성 되게 했다. 

     

    이제 클릭을 했을 때 해당 위치에 유닛 생성하게 하는 건 끝났다. 그런데 아직 손 봐야 할 게 조금 있긴 하다. 

     

    일단 클릭을 했을 때 소환 하는 건 Unit이 아니라 플레이어 공격인데 나는 이걸 마법곡괭이 느낌으로 곡괭이만 둥실둥실 날라다니게 할 것이다. 

     

    그리고 Player의 스텟을 참조 할 것이다. 그러니 Player를 먼저 마무리를 해보자. 

     

    csv로 받아오는 플레이어 스텟, 플레이어가 공격 하는 곡괭이 디테일 구현 골드 및 데이터 등등등 

    하고 나서 이제 강화 추가하면 될 것 같다. 

     

     

     

    2.Player 기초 기능 어느정도 마무리

    Player 컨트롤 부분을 거의 다 만들었다. 

    클릭 시에 유닛 소환, 그리고 유닛 구매가 있는데, 유닛 구매를 하기 위해서 Gold를 만들고 구매 가능 하면 구매하게끔 해서 유닛 구매까지 만들어봤다. 

     

    대충 UI를 만들어 줬고 UnitData마다 저 UI의 값들이 바뀌게 해줬다. 

     

    이 때 노란색 부분을 보면 게이지인데 차오르는 느낌을 줘야했다. 

     

    그래서 유닛을 소환 하는 로직을 유닛을 소환-> canSpawn false -> 유닛 재생성시간 대기 -> canSpawn true -> 유닛 소환

    이렇게 하려고 했다.

     

    그래서 함수를 

     

    private void WaitReSpawnTime()
    {
        spTime = 0;
        while(spTime < controlUnitData.statData.spawnCool)
        {
                spTime += Time.deltaTime;
                SpawnGageChange();

        }
        canSpawn = true;
    }

     

    이런 느낌으로 작성 했는데 유닛을 계속 작성 했다.

    이거는 상식부족으로 인한 이슈라고 볼 수 있는데, 위 코드처럼 실행을 하려면 코루틴으로 사용을 해줬어야 했다. 

    함수 하나가 실행이 됐다고 그게 끝나기 전까지 다음으로 안 넘어가는 것이 아니다. 

     

    그래서 코루틴으로 다시 만들어줘서 시간이 다 찼으면 true로 만들어서 다시 유닛이 생성 되게 만들어 줬다.

     

    스폰중지도 한 번 넣어봤다. 

    오늘은 이렇게 해서 마무리인데 튜터님께서 기능을 너무 구현 못 했다고 하셨다. 

    내가 봐도 그렇다. 뭐 하나 구현 하기 전에 너무 많은 고민을 한 후에 시작을 해서 그런 것 같다. 

     

    튜터님께서는 완벽주의 성향을 버리고 일단 구현을 어떻게든 야매방식으로든 시작을 하는 게 훨씬 중요하다고 말씀 해주셨다. 전에도 말씀 해주셨지만 그런 마음 가지기가 너무 쉽지 않다. 

     

    효율적으로 작업을 하고 싶어서인걸까? 

     

    아무튼 튜터님 말을 들어야 한다. 앞으로 코드 구조가 어떻든 간에 일단 팔다리 돌아가게끔만 구현을 해서 최대한 빠르게 다 구현하기로 한다. 

     

     

     

    내일목표 : UI 작업, 기초 디테일적인 수정, 최대한 많은 기능 구현, 강화 어떻게 하지.

Designed by Tistory.