Unity Personal MiniGame(5)

장현태입니다·2025년 6월 7일

Unity Personal Project

※ 학습내용을 바탕으로 작성하여 틀린 사항이 있을 수 있습니다.

랜덤 미로 생성

백 트래킹 알고리즘 : 문제해결을 위해 모든 경우를 탐색하고, 만약 해당 값이 옳지 않다면 이전 상태에서 다시 탐색하는 알고리즘이다.

전체를 채우고 하나씩 빼면서 방문했던 곳을 true로 지정하면서
길을 만드는 형식

MazeCell)

  1. 왼쪽,오른쪽,앞,뒤,방문안한 블럭

  2. 왼,오,앞,뒤 오브젝트 비활성화 및 방문 블럭 체크

MazeGenerator)

전체를 셀로 체우고 GenerateMaze를 통해 반복하여
작업을 실행

박스 배치를 랜덤으로 하고싶은 경우 모든 셀을 넣고 모든 셀 중에 랜덤으로 [x,z]값을 뽑아서 전체 셀크기와 박스의 수 중에 낮은 값을 최대 갯수로 정하여 박스를 인스턴스로 생성해준다

1) 현재 셀을 방문했음 표시하고, 지워준다.
2) do while문을 사용해서 다음셀을 지정하고 5번의 다음셀 지정을 해준다
3) 다음 셀이 null이 아닐때까지 반복

가져온 현재셀을 GetUnvisitedCells에서 가져와 변수에 저장하고,
랜덤으로 셀을 선택

파라미터를 현재 cell을 가져와서 현재 cell의 위치와 cell크기를
나눠주고 변수에 저장(cell크기로 나눠주는 이유는 cell의
크기에 따라 cell이 들어갈 수 있는 최대 갯수가 달라지기 때문)
그 후, if문을 통해 해당하는 이웃을 반환

이전셀.x < 현재셀.x => 이전셀.x + 1 방향 지우기, 현재셀.x - 1 방향 지우기
이전셀.x > 현재셀.x => 이전셀.x - 1 방향 지우기, 현재셀.x + 1 방향 지우기
이전셀.z < 현재셀.z => 이전셀.z + 1 방향 지우기, 현재셀.z - 1 방향 지우기
이전셀.z > 현재셀.z => 이전셀.z - 1 방향 지우기, 현재셀.z + 1 방향 지우기


결과

셀 프리팹)

실행 전)

실행 후)

랜덤한 곳에 박스와 종료 지점 구현 완료

0개의 댓글