[Unity] 3D 방치형 게임 만들기

Connected Brain·2025년 3월 24일

Unity 3D를 활용한 방치형 게임 만들기

필수 요소

  1. 기본 재화 표시 UI
  2. 플레이어 AI 시스템
  3. 아이템 및 업그레이드 시스템
  4. 게임 내 통화 시스템
  5. 아이템 및 장비 창 구현
  6. 스테이지 시스템
  7. Scriptable Object를 이용한 데이터 관리
  • 일반적으로는 방치형 게임으로 무한히 전투를 치르는 게임을 생각하기 쉽지만 나는 택시를 소재로 한 방치형 게임을 개발하고자 한다.

아이디어 구상

  • 반복적으로 손님이 생성되고 목적지가 할당됨
  • NavMesh로 길을 찾아 목적지까지 이동
  • 이동 시간 동안 손님의 인내심이 감소 → 완전히 감소되면 중간에 손님이 내림
  • 손님을 목적지까지 이동시키고 보상으로 골드를 획득
  • 획득한 골드로 인내심 감소 수치나 이동 속도를 업그레이드

트러블 슈팅

  • 문제점은 손님을 어떻게 생성할 지에 대한 고민에서 시작하였다.
  • 손님이 도로에서 생성되지 않게 하기 위해서 가장 처음 도입한 해결책은 아래와 같다.
float spawnDistance = Random.Range(spawnMinRange, spawnMaxRange);
Vector3 spawnPos = transform.position + (transform.forward * spawnDistance) + spawnAreaOffset;
  • 생성 범위를 두고 해당 범위에서 무작위로 선택한 값에 차량의 정면 방향으로 해당 범위만큼 앞으로간 방향에서 현재 그림 상으로는 오른쪽 앞에 생성되어야 하므로 (4,1,4)의 오차를 더했으나
    이런 방식은 좌회전, 우회전을 하는 차량에서 사용하기에는 적절하지 않았다. 늘 오른쪽에 인도가 있을 것이라는 보장이 없기 때문이다.

해결책

  • 아직 적용하지는 못했지만 구상한 해결책은 다음과 같다.
  • 해당 점이 있는 위치에서 아래 방향으로 Ray를 발사하고, 현재 회색으로 된 지면의 레이어를 변경하여 도로와 구분하도록 한다.
  • 이동 중에 Ray가 소환 가능한 지역임을 확인한 상태일 때 승객을 생성하는 로직을 실행한다.

이 방법을 적용하면 주변 상황을 인식해 동적으로 소환 지점을 확인할 수 있으므로 이전의 문제를 해결할 수 있을 것이라고 생각한다.

0개의 댓글