메인 컨텐츠가 될 게임 씬부터 만들기 시작한다.
화면 중앙 회색 구역에 여러종류의 과일모양이 8x8 규격으로 배열될 것이다.
위쪽에는 점수와 일시정지 버튼이 들어가고
아래쪽에는 타이머가 들어갈 예정이다.
먼저 회색 구역에 과일을 랜덤으로 배열하는것을 구현한다.
Board는 로직을 관리하며
Node는 Block(과일)들이 위치할 위치의 기준이되고, 각종 정보를 저장하는 오브젝트 묶음이 된다
Blocks는 게임중 생성된 과일 블럭들의 묶음이다
Nodes와 Blocks의 구역은 회색 구역의 정확히 2배 크기이다.
블럭을 맞춰 공간이 비면 빈 공간을 채우로 위의 블럭이 아래로 내려와야 하는데,
블럭이 내려오고 위에서 블럭이 생성될 때 게임 화면에서 블럭이 생성되면 어색할 뿐더러,
코루틴으로 블럭이 내려오는 애니메이션이 진행될 때 간격이 제멋대로가 되어 보기 안좋을 것이다.
그래서 이미지로 가려진 위의 8x8 구역에서 미리 블럭들을 생성해두고 게임화면에서 노드가 비게 되면 위의 블럭들을 그대로 아래로 내리면 된다.
노드는 (0,0) 부터 (7,15) 까지의 인덱스를 가지게 되고 해당 정보는 point에 저장된다.
이 인덱스 정보를 이용하여 실제 Node 배열에서 쉽게 노드를 불러올 수 있다.
위의 블럭들을 위치시키거나 이동시키기 위해 인덱스 정보뿐만 아니라 실제 노드가 위치한 좌표도 저장해놔야한다.
이 노드들은 Node 오브젝트에서 Grid 컴포넌트 형태로 배치되어있기 때문에 이렇게 따로 변환해서 저장해줘야 실제 좌표를 알 수 있다.
노드 위에 과일블럭이 위치해 있으면 그 블럭의 정보를 placedBlock에 저장하고, 비어있으면 null이 된다.
블럭의 역할은 단순하다.
각종 과일의 이미지를 배열에 담아두고, 생성되면 랜덤으로 하나의 과일을 정해 표시한다.
추후 blockType을 비교해 같은 이미지 n 개가 배열되면 블럭이 파괴되는 게임 로직을 구성 할 수 있을것이다.
또한 블럭이 움직일때 실행되는 코루틴 애니메이션들은 전부 Block 스크립트에 작성될 것이다.
Board에 작성된 가장 핵심이 되는 로직은 두부분으로 나눌 수 있다.
먼저 모든 노드를 탐색하며 노드에 빈공간이 있어 블럭이 떨어져야 하는지 검사한다.
해당 노드에 위치한 블럭이 떨어져야 하는 블럭이면 목적지 노드를 탐색한 후 목적지 노드로 블럭의 정보를 넘겨준 후 원래 위치에서 블록 정보를 삭제한다.
앞전에선 정보만 넘어간 것 뿐이므로 모든 블럭을 순회하며 실질적으로 화면에 표시되는 블럭 오브젝트를 아래로 이동시켜주면 이동이 완료된다. 이렇게 이동시켜주면 우수수 산만하게 블럭이 이동하지 않고 깔끔하게 블럭을 이동시킬 수 있다.
랜덤한 과일블럭이 노드위치에 잘 생성된 모습이다
'Unity 게임개발' 카테고리의 다른 글
3. 블럭 스왑과 상태 검사 (0) | 2025.02.01 |
---|---|
2. 블럭 스왑 구현 (0) | 2025.01.14 |
0. 유니티 밍글맹글 만들기 (0) | 2025.01.11 |
기획 - 1. 장르 정하기 (0) | 2023.08.04 |
팀프로젝트 진행 - 1 (0) | 2023.08.04 |