private void RotateGear(int position, int source) { if (currentGearsObjects[position] != null) { currentGearsObjects[position].GetComponent <GearController>().Reverse = !currentGearsObjects[source].GetComponent <GearController>().Reverse; currentGearsObjects[position].GetComponent <Animator>().enabled = true; // check if goal is reached if (position == targetGearId) { success = true; captionBackground.GetComponent <Animator>().enabled = true; remote.GetComponent <Animator>().SetBool("success", true); if (mainCamera != null) { mainCamera.GetComponent <Animator>().SetBool("success", true); } tvStatic.GetComponent <Animator> ().SetBool("success", true); if (isCity == true) { audioController.CitySuccess(); } else { audioController.Success(); } } if (position < 20) { if (!IsMoving(position + 4)) { RotateGear(position + 4, position); } } // check up if (position > 3) { if (!IsMoving(position - 4)) { RotateGear(position - 4, position); } } // check right if (position % 4 < 3) { if (!IsMoving(position + 1)) { RotateGear(position + 1, position); } } // check left if (position % 4 > 0) { if (!IsMoving(position - 1)) { RotateGear(position - 1, position); } } } }