게임 개발 공부 기록

19일차 - TopDown, SimpleMetaverse

00lwt 2025. 2. 18. 21:28

▶▷ TopDown


TopDown은 어제 제작을 다 했지만 글을 쓸 시간이 부족하여 오늘에서야 쓰게 되었다.

 

하이어라키 구조

키보드로 상하좌우 이동을 하고 마우스를 통해 조준하고 공격하는 방식으로 구현했다. 플레이어가 바라보는 방향은 마우스의 좌표를 따라가도록 했다. 파티클 효과를 추가해 플레이어가 이동할 때와 화살이 부딫힐 때의 시각적 효과를 더했다.

배경은 타일맵을 이용하여 배치했다. 테두리에는 타일맵의 알파값을 조절하여 보이지 않도록 배치하고 콜라이더를 추가해 플레이어가 밖으로 나가는 현상을 방지했다.

적은 3종류가 있으며 각각의 사거리와 시야 범위에 차이를 두었으며 공격 방식, 데미지 또한 차이를 두었다.

체력바는 value 값을 이용해 플레이어의 체력 스탯과 동기화 되도록 하였고 몬스터를 모두 잡으면 웨이브가 올라가는 형식으로 UI를 배치했다. 가장 난항을 겪었던 부분은 UI였던것 같다.

 

▶▷ 트러블 슈팅

TopDown 막혔던 부분:

1. HomeUI에서 Start 버튼을 눌러도 사라지지 않고 게임만 시작됨

시도한 방법:

1. 관리를 담당하는 스크립트에서 누락된 부분이 있을거라 추측하고 UIManager, GameManager 등을 재검토함.

해결:

1. GameManager 스크립트에 StartGame()이 호출될 때 uiManager의 SetPlayGame()이 호출돼야 하는데 누락되어 해당 부분 수정.

public void StartGame()
{
    uiManager.SetPlayGame(); // 누락
    StartNextWave();
}

 

 

▶▷ SimpleMetaverse

TopDown을 마무리하고 개인 프로젝트를 본격적으로 시작하였다.

직접 구현해보는 것이기 때문에 깃허브부터 차근차근 컨벤션 지켜가면서 진행하고 있다.

자세한 내용은 내일 이어서 작성하려고 한다.

 

▶▷ 트러블 슈팅

SimpleMetaverse 막히는 부분:

1. 점수를 저장하는 과정에서 점수에 관한 변수를 int로 선언했는데 UI에 점수 정보를 넘겨줄 때 string으로 넘겨주어야 해서 오류가 생김

시도한 방법:

1-1. int로 선언했던 점수를 string으로 바꿔서 호출 해보려고 시도함

1-2. 강의에서 봤던 PlayerPrefs로 저장해서 전달해보려고 시도함

해결:

1. 아직 해결중

 

▶▷ 알게된 점

1. 애니메이터 트랜지션 Has Exit Time 해제하는 이유

  • 이전 애니메이션이 끝나지 않더라도 다음 애니메이션으로 넘어갈 수 있기 때문

 

2. 애니메이터에서 AnyState를 사용하면 AnyState와 화살표가 연결되어 있다면 어떤 행동에서든 전환될 수 있음