HexaPuzzle 시스템 구현

github Link : https://github.com/bbno1105/HW_HexaPuzzle

 

프로젝트 개요

프로젝트 기간 : 5일 ( 2023-03-02 ~ 2023-03-06 )

프로젝트 인원 : 개인 프로젝트

프로젝트 엔진 : Unity

 

 

핵심 시스템

1. Tile Setting

육각형의 타일이 배치되기위해 도형의 사이즈를 계산하여 배치합니다.

타일이 생성될 때 ID값을 부여받고 여섯면에 인접한 타일의 ID 값을 기억하고 있습니다.

 

2. Block

1) 생성 및 이동 상태

게임 데이터에서 블록이 생성될 타일의 ID값을 설정하면 해당 타일에서 블록이 생성됩니다.

 

블록이 위치한 타일은 주변 타일을 탐색하여 블록이 이동할 수 있는지 확인하고 이동시킵니다.

블록의 이동은 조건과 우선순위를 판단하여 이동시킵니다.

 

[ 블록 이동의 조건 및 우선순위 ]

1. 블록이 위치한 타일의 바로 아래가 비어있다면 블록을 이동시킵니다.

 

(블록이 위치한 타일 위에 블록이 존재하지 않는다면)

2. 블록이 위치한 타일의 좌/우 아래가 비어있다면 좌/우 아래로 블록을 이동시킵니다.

 

 

2) 매치 상태

블록의 이동이 완료되면 3개 이상 직선으로 매치가 가능한 경우를 탐색합니다.

매치가 가능한 경우 : 매치된 블록을 터뜨리고 빈 타일에 블록을 이동시키기 위해 이동 상태로 전환합니다.

매치가 불가능한 경우 : 플레이어 조작 상태로 전환합니다.

 

 

3) 조작 상태

유니티 이벤트 시스템의 IPointerDownHandler, IPointerUpHandler 을 활용하여 클릭한 대상을 판별합니다.

클릭한 대상으로부터 터치 포인터가 이동한 방향벡터값을 활용해 조작 방향을 판단하였습니다.

 

조작 후 매치가 가능한 경우 : 매치된 블록을 터뜨리고 빈 타일에 블록을 이동시키기 위해 이동 상태로 전환합니다.

 

조작 후 매치가 불가능한 경우 : 이동한 블록을 다시 되돌리고 조작상태를 유지합니다.

 

 

Project Diary

Date 분류 [HexaPuzzle]
3/2 프로젝트 생성 Unity 2020.3.17 프로젝트 생성
3/2 타일 헥사 타일맵 생성
3/2 타일 타일 ID 추가 및 주변 타일 ID 세팅
3/2 블록 블록 떨어짐 구현 (규칙 : 아래 판단 -> (위에 블록 없으면) 좌/우 판단)
3/3 플레이어 상태 플레이어 상태에 따라 코드가 적용되도록 리펙토링
3/3 매치 3개 이상 매치
3/3 데이터 QuickSheet 연결 및 스테이지 데이터 연결
3/4 조작 터치한 블록 판단하기
3/4 블록 이동 터치한 블록 이동시키고 판단하기
3/4 블록 연출 터지는 애니메이션 연출 추가
3/5 조작 플레이어 조작상태 제한 (PLAYSTATE.PLAY 상태일때만 조작가능)
3/5 빌드 1차 테스트 빌드 세팅
3/5 팽이 터질때 주변이 팽이면 영향받도록 (1차 : 깨짐, 2차 : 터짐)
3/5 블록 블록 오브젝트 풀링 2번되던 오류 수정
3/6 UI 프로토타입용 UI 추가
3/6 팽이 팽이 리소스 변경 (동그란거)
3/6 사운드 사운드컨트롤러 추가
3/6 UI UI 데이터 연결
3/6 사운드 사운드 리소스 적용
3/6 클리어 클리어, 게임오버 및 재시작 추가
3/6 해상도 대응 캔버스 사이즈에 맞춰서 퍼즐이 위치할 수 있도록 수정
728x90

'Project > StudyProject' 카테고리의 다른 글

Change And Drop  (0) 2023.03.01
Minimanimo  (0) 2022.12.01
This Game is Not Portal Game  (0) 2022.09.06
Slime Must Die  (0) 2022.09.06

+ Recent posts