내일배움캠프 67일차 7/19 TIL + 버그 수정과 유저 편의성 개선
작업 내용
버그 수정
오늘은 원래 계획대로였다면 유닛 추가를 더 진행하고 기타 작업을 해볼라고 했지만, 이번에 합치고 테스트를 진행하는 과정에서 역시나 버그들이 발견되었다.
버그 목록은 다음과 같다 :
홀드하면 이동 취소,
유닛 콜라이더 작게 수정,
유닛 안보임
여기에 추가로 밖을 찍으면 이동 못하게 하자는 의견이 나와서 원래는 유닛이 이동 가능한 초록 범위 밖을 찍으면 그 방향으로 갈수 있는 곳 까지는 이동을 했는데, 이제는 그렇게 찍으면 못하게 막았다.
private bool IsPositionInField(Vector2 worldPosition)
{
if (worldPosition.x > 8f || worldPosition.y > 4f || worldPosition.x < -8f || worldPosition.y < -4f)
{
return false;
}
return true;
}
public void OnMouseRightClick(InputAction.CallbackContext context)
{
int count = selectedUnits.Count;
if (count > 0)
{
MouseStartPos = mouseDrag.ReadValue<Vector2>();
Vector2 worldMousePos = mainCamera.ScreenToWorldPoint(MouseStartPos);
//목표 위치가 이동 범위 밖으로 나가면 이동 불가
if (!IsPositionInField(worldMousePos))
{
return;
}
방법은 간단하게 UserUnitController 클래스에 유저 클릭이 유닛 이동 범위 밖이면 이동 로직에서 return을 해줬다.
그 다음 홀드하고 나서 다른 명령을 내렸을 때 이전 이동 지점으로 계속 이동하던 에러가 있었는데, 이는 홀드시 agent만 정지시키고 목적지를 초기화해주지 않아서 난 에러였고, HoldState에서 목적지도 현재 위치로 바꿔주니 해결되었다.
유닛 콜라이더가 커서 유닛끼리 충돌이 과하다는 얘기가 있어서 콜라이더도 작게 바꾸고 NavMeshAgent의 장애물 회피 범위도 조금 줄였다.
유닛이 안보이던 에러는 Instantiate시 유닛이 다음 Update가 불리기 전까지 Start 함수가 실행이 안되어서 agent의 회전(NavMeshPlus에서 기존에 있던 에러로 NavMesh가 원래 3D 용이다보니 2D에 적용시 자동으로 시작할 때 회전해서 누워버리는 오류가 있었다) 을 Start에서 막아놨던게 적용이 안되어 유닛이 누워버려서 화면상에는 안보이던 것이었다.
그래서 Start에서 이 부분만 Awake로 올렸다. 앞으로는 Start에는 Update가 1번 정도 불리고 나서 실행해도 되는 것을 위주로 넣어야겠다.
튜토리얼 추가
그 다음에 게임을 개발하지 않은 사람이 게임을 한번 플레이 해보셨는데, 문제는 이 분이 스타크래프트나 워크래프트를 안해봐서 조작에 익숙하지 않아 애를 먹으셨다.
그래서 이에 대해 튜토리얼을 추가하라는 얘기를 듣고 간단하게 일단 추가를 하였다.
나중에 시간을 들여 좀 더 세세하게 짤 예정이다.
튜토리얼 씬은 사진처럼 위에 목록들을 누르면 해당 목록에 적힌 주제에 대한 설명이 나오고 예시 사진이 나온다.
방법은 간단하게 버튼으로 SetActive만 On, Off 해주면 되고, 이전에 열려있던 GameObject만 따로 임시 변수에 저장해두었다가 매번 꺼주고 새 GameObject를 담아서 켜주면 된다.
마무리
우리 팀이 나름대로 게임 사이클 완성도 잘했고, 게임에 필수적인 요소들을 잘 개발해주어 좋았는데 역시나 에러들이 발목을 잡을 것 같다.
지금도 다른 인원 1명이 유저테스트 했을 뿐인데 여러가지 에러나 개선사항이 추가되었다.
다음 주에 중간 발표를 하고 추가 피드백을 받을텐데 그런 것을 생각하면 역시 당장 이것저것 새로운 것을 만들겠다는 생각 보다는 당장 만든 내용들을 개선하고 버그를 잡고, 로직이나 코드 구조를 수정한 다음에 다음 목표를 세워야할 것 같다.