private IEnumerator CheckMatch(PiceOfPuzzle piceOfPuzzle, int previous_position) { if (piceOfPuzzle.id == piceOfPuzzle.position_id) { countPuzzleSetProperly++; } else if (piceOfPuzzle.id == previous_position) { countPuzzleSetProperly--; } if (countPuzzleSetProperly == images.Length - 1) { PiceOfPuzzle puzzle = Instantiate(piceOfPuzzlePrefab) as PiceOfPuzzle; puzzle.position_id = empty_card_position; int id = empty_card_position; puzzle.ChangeSprite(id, images[id]); float posX = (offsetX * (grid - 1)) + startPos.x; float posY = startPos.y - (offsetY * (grid - 1)); puzzle.transform.position = new Vector3(posX, posY, startPos.z); yield return(new WaitForSeconds(2.0f)); SceneManager.LoadScene(1); } else { yield return(null); } }
public void CanMoved(PiceOfPuzzle piceOfPuzzle) { bool moved = true; int dif = empty_card_position - piceOfPuzzle.position_id; switch (dif) { case -1: piceOfPuzzle.transform.position = new Vector3(piceOfPuzzle.transform.position.x - offsetX, piceOfPuzzle.transform.position.y, piceOfPuzzle.transform.position.z); break; case 1: piceOfPuzzle.transform.position = new Vector3(piceOfPuzzle.transform.position.x + offsetX, piceOfPuzzle.transform.position.y, piceOfPuzzle.transform.position.z); break; case 3: piceOfPuzzle.transform.position = new Vector3(piceOfPuzzle.transform.position.x, piceOfPuzzle.transform.position.y - offsetY, piceOfPuzzle.transform.position.z); break; case -3: piceOfPuzzle.transform.position = new Vector3(piceOfPuzzle.transform.position.x, piceOfPuzzle.transform.position.y + offsetY, piceOfPuzzle.transform.position.z); break; default: moved = false; break; } if (moved) { int temp = piceOfPuzzle.position_id; piceOfPuzzle.position_id = empty_card_position; empty_card_position = temp; StartCoroutine(CheckMatch(piceOfPuzzle, empty_card_position)); } }