2018. 4. 23. 03:26 IT/Unity 게임개발
[unity 게임개발] 테트리스 게임 로직 개발 2
맵 타일과 유저 입력에 따른 전체적인 게임 플로우를 관리하는 GameManager 클래스,
블럭의 이동 및 회전, 동작을 관리하는 Block 클래스로 전체 로직을 관리하겠습니다.
전체적인 플로우는 Block 객체가 고유의 블럭 정보 ( 위치, 회전, 색 등)를 가지고, GameManager가 유저의 입력가 게임 진행에 따라 Block에게 동작을 요청하는 식으로 진행될 것입니다.
1. GameManager
public class GameManager : MonoBehaviour { // 사전에 블럭의 배열과 색을 정의. ( 생략) Block[] blocks = new Block[7]; const int HEIGHT =25; const int WIDHT = 12; Block playerBlock; int[,] map = new int[25, 12]; // Use this for initialization void Start () { // 초기화 } // Update is called once per frame void Update () { // 버튼 입력에 따른 테트리스 로직 실행. } // 타일을 매 일정시간마다 내리는 함수. IEnumerator Tick() { yield return null; } // 맵 생성 함수 void MakeMap(ref int[,] _map) { } // 4,4 위치에 블럭을 새로 생성 Block MakeBlock(ref int[,] _map) { return null; } // 고정된 블럭이 맵 타일의 최상위를 넘었는지 확인하는 함수. bool CheckEnd(int[,] _map) { return false; } // 고정된 타일의 좌우를 비교하여 가득 찬 라인을 제거하도록 요청한다. void CheckLine(ref int[,] _map) { } // line을 삭제하고, 위쪽의 타일을 내린다. void DeleteLine(int _line) { } void GameOver() { } }
2. Block
public class Block { public int[,,] tile; public Color32 color; int direct; int posX; int posY; public Block(int[,,] _tile, Color32 _color) { tile = _tile; color = _color; } public void SetPostion(int _x,int _y) { int posX = _x; int posY = _y; } // 좌우로 움직임을 명령하는 함수. 외부에서 호출 public void MoveHorizon(int _x, ref int[,] _map) { } // _x,_y 좌표로 이동하는 함수 ( 좌우 이동과 한 칸씩 내릴때 사용) void MoveTile(int _direct,int _x, int _y, ref int[,] _map) { } // 좌우 좌표로 이동가능한지 확인하는 함수 bool CheckTile(int _x, int[,] _map) { return true; } // 블럭을 회전시키고 적용하는 함수. 회전시 맵을 삐져나갈 경우 때문에 새로 확인. public void RotationTile(ref int[,] _map) { } // 블럭의 밑이 고정타일 또는 바닥인지 확인 후 바닥이 아니면 MoveTile을 이용해 내린다. // 바닥이면 applyGround 후 false를 리턴. - GM에서는 라인검색을 할 수 있도록. public bool MoveDown( int[,] _map) { return true; } // 바닥에 닿은 블럭을 고정타일로 맵에 반영하는 함수. void ApplyGround(Block _block, ref int[,] _map) { } // 블럭을 바닥으로 한 번에 이동시키는 함수. // 블럭의 밑을 바닥까지 검사하여 가장 적은 거리만큼 이동 시키고 ApplyGround를 한다. public void DropTile(Block _block, ref int[,] _map) { } }
* 지적은 언제나 환영입니다.
'IT > Unity 게임개발' 카테고리의 다른 글
[unity] 구글 플레이 연동 및 파이어 베이스 사용기 (환경 및 오류 위주) (1) | 2018.05.01 |
---|---|
[unity 게임개발] 테트리스 게임 로직 개발 3 (0) | 2018.04.24 |
[unity 게임개발] 테트리스 게임 로직 개발 1 (0) | 2018.04.22 |
[unity 게임개발] 지렁이 키우기 로직 개발 3 (0) | 2018.04.18 |
[unity 게임개발] 지렁이 키우기 로직 개발 2 (0) | 2018.04.16 |