public void processClick() { levelCube = GameObject.FindGameObjectWithTag("Cube"); bool findSphere = false; var cubeScale = levelCube.transform.localScale; allSpheres = GameObject.FindGameObjectsWithTag("Sphere"); MoveToCube result = null; Color buttonColor = gameObject.GetComponent <Image>().color; foreach (var sphere in allSpheres) { Color sphereColor = sphere.GetComponent <Renderer>().material.color; if (sphereColor == buttonColor) { if (sphere.transform.localScale == cubeScale) { findSphere = true; sphere.GetComponent <MoveToCube>().SetEndPoint(levelCube.transform.localPosition); sphere.GetComponent <MoveToCube>().Move(); sphere.GetComponent <MoveToCube>().state = GameController.LEVEL_STATE.WIN; result = sphere.GetComponent <MoveToCube>(); controller.EndLevel(GameController.LEVEL_STATE.WIN, result); break; } else { sphere.GetComponent <MoveToCube>().SetEndPoint(levelCube.transform.localPosition); sphere.GetComponent <MoveToCube>().Move(); sphere.GetComponent <MoveToCube>().state = GameController.LEVEL_STATE.LOSE; result = sphere.GetComponent <MoveToCube>(); break; } } } if (!findSphere) { controller.EndLevel(GameController.LEVEL_STATE.LOSE, result); } }
private void Update() { if (timer == null) { return; } if (choosen != null && !isLevelEnd) { if (!choosen.IsOver()) { return; } if (endLevelState == LEVEL_STATE.WIN) { ChangeCubeColor(new Color(0, 255, 0, 0.5f)); } if (endLevelState == LEVEL_STATE.LOSE) { float shapeScale = choosen.transform.localScale.x; float cubeScale = gameSceneCreator.GetLevelCube().transform.localScale.x; if (shapeScale > cubeScale) { GameObject cube = gameSceneCreator.GetLevelCube(); broken = Instantiate(gameSceneCreator.brokenCubePrefab); broken.transform.position = cube.transform.position; broken.transform.localScale = cube.transform.localScale; Destroy(cube); } if (shapeScale < cubeScale) { ChangeCubeColor(new Color(255, 0, 0, 0.5f)); } } Debug.Log("Is over: " + choosen.IsOver()); isLevelEnd = true; PlayEndLevelSound(endLevelState); if (endLevelState == LEVEL_STATE.WIN) { IncreaseCurrentLevelStage(); } else { currentLevel = 0; } UI.ActiveteEndLevelUI(SetupEndLevelText(endLevelState), SetupEndLevelTextColor(endLevelState)); StartNextLevel(); choosen = null; } else { if (!timeout) { if (timer.GetCurrentTime() <= 0 && !isLevelEnd) { timeout = true; EndLevel(LEVEL_STATE.LOSE, null); currentLevel = 0; UI.ActiveteEndLevelUI(SetupEndLevelText(endLevelState), SetupEndLevelTextColor(endLevelState)); StartNextLevel(); choosen = null; } } } }
public void EndLevel(LEVEL_STATE state, MoveToCube choosenOne) { timer.StopTick(); choosen = choosenOne; endLevelState = state; }