// Use this for initialization void Start() { EM = FindObjectOfType <EventManager>(); SlidepuzzleControl = gameObject.transform.GetChild(0).gameObject; for (int i = 0; i < 4; i++) { for (int j = 0; j < 3; j++) { Tiles[i, j] = gameObject.transform.GetChild(0).GetChild(0).GetChild((i * 3) + j).gameObject.GetComponent <SlidePuzzleTile>(); Tiles[i, j].SetoriginPos(i, j); } } blank_Tile = Tiles[3, 2]; blank_Tile.is_blank = true; Tiles[0, 0].SetPos(1, 2); Tiles[0, 1].SetPos(2, 0); Tiles[0, 2].SetPos(0, 2); Tiles[1, 0].SetPos(1, 1); Tiles[1, 1].SetPos(2, 2); Tiles[1, 2].SetPos(1, 0); Tiles[2, 0].SetPos(2, 1); Tiles[2, 1].SetPos(3, 1); Tiles[2, 2].SetPos(0, 1); Tiles[3, 0].SetPos(3, 0); Tiles[3, 1].SetPos(3, 2); Tiles[3, 2].SetPos(0, 0); }
public void CheckDirection(SlidePuzzleTile SPT) { if (Answerd) { return; } if (SPT.Ver == blank_Tile.Ver && SPT.Hor == blank_Tile.Hor) { Debug.Log("위치가같음"); return; } if (blank_Tile.Ver == SPT.Ver) { if (blank_Tile.Hor - SPT.Hor == 1) { SPT.triggerMoving(3, 1); blank_Tile.triggerMoving(1, 1); Debug.Log("↑"); SPT.Hor++; blank_Tile.Hor--; } else if (SPT.Hor - blank_Tile.Hor == 1) { SPT.triggerMoving(1, 1); blank_Tile.triggerMoving(3, 1); Debug.Log("↓"); SPT.Hor--; blank_Tile.Hor++; } if (blank_Tile.Hor - SPT.Hor > 1) { int middle = blank_Tile.Hor - SPT.Hor; for (int i = 0; i < 4; i++) { for (int j = 0; j < 3; j++) { if (Tiles[i, j].Ver == SPT.Ver && Tiles[i, j].Hor < blank_Tile.Hor && Tiles[i, j].Hor >= SPT.Hor) { Tiles[i, j].triggerMoving(3, 1); Tiles[i, j].Hor++; } continue; } continue; } Debug.Log("2↑"); blank_Tile.triggerMoving(1, middle); blank_Tile.Hor -= middle; } else if (SPT.Hor - blank_Tile.Hor > 1) { int middle = SPT.Hor - blank_Tile.Hor; for (int i = 0; i < 4; i++) { for (int j = 0; j < 3; j++) { if (Tiles[i, j].Ver == SPT.Ver && Tiles[i, j].Hor > blank_Tile.Hor && Tiles[i, j].Hor <= SPT.Hor) { Tiles[i, j].triggerMoving(1, 1); Tiles[i, j].Hor--; } continue; } continue; } Debug.Log("2↓"); blank_Tile.triggerMoving(3, middle); blank_Tile.Hor += middle; } } if (blank_Tile.Hor == SPT.Hor) { if (blank_Tile.Ver - SPT.Ver == 1) { SPT.triggerMoving(2, 1); blank_Tile.triggerMoving(0, 1); SPT.Ver++; blank_Tile.Ver--; Debug.Log("<-"); } else if (SPT.Ver - blank_Tile.Ver == 1) { SPT.triggerMoving(0, 1); blank_Tile.triggerMoving(2, 1); SPT.Ver--; blank_Tile.Ver++; Debug.Log("->"); } if (blank_Tile.Ver - SPT.Ver > 1) { int middle = blank_Tile.Ver - SPT.Ver; for (int i = 0; i < 4; i++) { for (int j = 0; j < 3; j++) { if (Tiles[i, j].Hor == SPT.Hor && Tiles[i, j].Ver < blank_Tile.Ver && Tiles[i, j].Ver >= SPT.Ver) { Tiles[i, j].triggerMoving(2, 1); Tiles[i, j].Ver++; } continue; } continue; } Debug.Log("2<-"); blank_Tile.triggerMoving(0, middle); blank_Tile.Ver -= middle; } else if (SPT.Ver - blank_Tile.Ver > 1) { int middle = SPT.Ver - blank_Tile.Ver; for (int i = 0; i < 4; i++) { for (int j = 0; j < 3; j++) { if (Tiles[i, j].Hor == SPT.Hor && Tiles[i, j].Ver > blank_Tile.Ver && Tiles[i, j].Ver <= SPT.Ver) { Tiles[i, j].triggerMoving(0, 1); Tiles[i, j].Ver--; } continue; } continue; } Debug.Log("2->"); blank_Tile.triggerMoving(2, middle); blank_Tile.Ver += middle; } } return; }