NPC 충돌 처리
문제
- NPC를 게임 진행 되는 동안 랜덤으로 이동하게 만들었습니다. 그래서 맵에 있는 구조물이나 맵 벽을 통과 못하게 해야 했습니다.
- NPC의 이동은 이동할 방향을 랜덤으로 결정한 뒤 그 방향을 Raycast로 오브젝트를 감지하여 있다면 다른 방향으로 이동하게 코루틴으로 만들었습니다. 그런데 유니티가 멈춰버렸습니다..
- Raycast가 구조물만 감지했어야 하는데, 따로 설정을 안해서 맵까지 감지한 것 같습니다.
💡
해결
- NPC 이동을 Update 함수에서 계속 호출하는 식으로 변경하고, Raycast로 특정 layer를 감지하면 다른 방향으로 이동하게 하여 해결했습니다.
플레이어 충돌 처리
문제
- 다른 기능 테스트 중 플레이어가 갑자기 모든 오브젝트를 통과할 수 있게 되었습니다.
- Rigidbody나 Collider를 수정한 게 없었는데도 이런 문제가 생겼습니다.
💡
해결
- 플레이어 객체의 Rigidbody와 Collider를 삭제하고 다시 추가해줬더니 복구되었습니다. 😁
카메라 범위 설정
문제
- 카메라 이동 범위 플레이어와 맵 구역을 기준으로 제한하려고 했습니다.
- 카메라 스크립트에서 코드 순서를 맵 제한 → 플레이어 이동 제한 이렇게 작성했지만, 맵 제한 이동이 적용되지 않았습니다.
💡
해결
- 플레이어 이동 제한 코드가 먼저 오게 순서를 바꿔서 해결했습니다.😁
장애물 반복 생성
문제
- 장애물을 한 번에 10개씩 만들고 일정 시간 뒤에 다시 10개 씩 생성하게 InvokeRepeating으로 장애물 생성 함수를 일정 시간 마다 호출하게 했습니다. → 유니티가 멈췄습니다.
- 그래서 최대 개수를 정해서 처음에 최대 개수만큼 생성한 후, 한 장애물이 지워지면 새로운 장애물이 한 개 생성하면서 개수를 유지하려고 했습니다.
- 만들어진 장애물을 큐에 넣어서 개수를 관리했습니다.
- 그런데 1개가 사라질 때마다 장애물 2개가 새로 생성되었습니다.
- Destroy와 생성함수가 딜레이 없이 실행되어서 두 번 생성되나 해서 invoke나 코루틴으로 딜레이를 줘봤지만 역시 아니었습니다.
💡
해결
- 장애물 객체에는 콜라이더 두 개가 있는데, 그 것 때문에 2개가 지워진 걸로 인식이 되었습니다. 그래서 플레이어가 넘어가는 것을 감지하는 콜라이더는 지우고 1개로 사용하여 2개씩 생성되는 건 해결했습니다.
타일맵 반복 생성
문제
- 장애물과 마찬가지로 바닥을 이루고 있는 타일맵도 플레이어가 어느 정도 지나가면 제거하고 바로 다음 위치에 새로 생성하려고 했습니다.
- 프리팹으로 만들고 특정 위치에 도달하면 제거한 후 Instantiate로 생성했는데, 한 칸짜리 타일이 지정되지 않은 position에 랜덤으로 생성되었습니다.
💡
해결
- 프리팹에서 기존 오브젝트로 복구하고, 두 개의 타일맵을 따로 생성해 특정 위치에 타일맵이 도달하면 위치를 옮기는 방식으로 해결했습니다.
게임 시작 전 카메라 위치
문제
- 미니 게임을 시작하면 UI를 띄우고 Time.timeScale = 0;으로 게임을 멈춰 놓았습니다.
- 카메라가 플레이어의 일정 위치를 보여주게 설정해놨는데, 멈춰놓으니 계속 (0, 0, 0) 좌표와 설정 해놓은 위치를 계속 반복하여 이동했습니다.
- player를 못찾는 것도 아니었습니다.
💡
해결
- 검색해보니 TimeScale이 0일 때, updatesms 실행되고, fixedUpdate는 실행되지 않는다고 해서 카메라 조정하는 코드를 TimeScale이 0일 때 fixedUpdate에서 실행되도록 했습니다.
대화문 출력 객체
문제
- 대화문을 출력하는 객체는 npc, chest 두 개가 있습니다. chest의 대화문이 npc에서 나오는 문제가 발생했습니다.
- 대화문을 관리하는 DialougeManager에서는 각 객체의 자식에서 TMP 컴포넌트를 찾아 그 텍스트를 띄우도록 했었습니다.
- 같은 스크립트를 두 객체가 써서 처음 설정한 텍스트가 계속 띄워지는 것으로 보였습니다.
💡
해결
- 대화문이 시작될 때 띄울 텍스트 객를 교체하는 식으로 해결했습니다.