목록Unity/3Match (6)
For me
블럭을 제거하고 새로 만들것이 아닌, 빈칸을 위로 올려 내리는 방식으로 진행 IEnumerator RespawnBlock() { //Debug.Log("RespawnBlock!!"); bool DidRespawn = false; for(int i = 0; i -1; j--) { if (board._blocks[i + j * HEIGHT].info.blockType == BlockType.EMPTY) { board._blocks[i + j * HEIGHT].Respawn(HEIGHT + 1 - basicCount); DidRespawn = true; } else if (board._block..

블럭이 매칭되면 빈칸을 채우기 위해 위에 있는 블럭을 처리해야 할것이다. 따라서 다음과 같이 3가지 순서로 나눠 처리했다. 1. 구역 나누기 2. 이동 거리 계산하기 3. 이동 하기 구역나누기 다음과 같이 구역을 나누어 배열에 저장 void DivideSection(ref List DivideBlocks) { // [BAISC] [EMPTY] [BAISC] [EMPTY] 순으로 값 저장 for (int i = 0; i -1; j--) { if (board._bloc..

1. 처음에는 BFS로 탐색해서 Match 하려고 했지만, T , L , 5칸 등 너무 많은 다른 모양으로 구현이 쉽지 않았음 2. 그럼 어떤걸 로 해야하나? 다음과 같이 숫자 순서대로 탐색하여 모양을 찾음. 매치 된다면 2진수로 값을 더하면 겹치는 수 없이 모든 Board 탐색 가능 만약 2,0,중앙 이 Match가 된다면? 1 + 4 + 0 = 5 7,3,1,5,0 으로 5줄 Match가 된다면? 128 + 8 + 2 + 32 = 170 이후, 모양에 맞는 모든 case를 switch문을 통해 처리할 수 있다. T, L , 4 , 5 , 사각형 등 모든 모양에 대해 처리할 수 있다. bool Find3Match(Block b, ref int[,] countBoard, BFSMode mode) { in..

유니티에는 다음과 같이 Event Trigger이 존재하는데, 컴포넌트로 사용하지않고 스크립트 내에서 설정할 것이다. BlockController.cs void InitEventTrigger() { EventTrigger eventTrigger = transform.GetComponent(); EventTrigger.Entry pointerDown = new EventTrigger.Entry(); pointerDown.eventID = EventTriggerType.PointerDown; pointerDown.callback.AddListener((data) => { OnPointerDown((PointerEventData)data); }); eventTrigger.triggers.Add(pointerD..
플레이 영상 개발 기간 : 1주 버그나 이상한 곳에서 특수 블럭이 나오긴 하지만.. 어떻게 진행했는지 정리하면 좋을것 같아 글 작성 Board Controller Init : 블럭 , 셀 설치 board를 WIDTH 와 HEIGHT 값으로 초기화 Cell 배치 (XML 파일에서 셀 맵 정보를 받아와 Cell 값 불러오기) Block 배치 (XML 파일에서 블럭 맵 정보 받아와 Block 값 불러오기 (NEVER일 경우 나타나지 않음) 더보기 #region Init public void Init() { board = new Board(WIDTH, HEIGHT); for (int i = 0; i < WIDTH; i++) { for (int j = 0; j < HEIGHT; j++) { Vector2 temp..