IEnumerator EndRoundCR() { EndRoundCRRunning = true; foreach (GameObject GO in GameObject.FindGameObjectsWithTag("Ground")) { Destroy(GO); } DestroyObject(Hook); DestroyObject(Player); if (ScoreAdded == false) { if (RunnerWin) { if (P1Run) { ScoreP1 += 1; } else { ScoreP2 += 1; } } else if (RunnerWin == false) { if (P1Run) { ScoreP2 += 1; } else { ScoreP1 += 1; } } EndRound.text = ScoreP1.ToString() + " - " + ScoreP2.ToString(); yield return(new WaitForSeconds(1.5f)); EndRound.text = ""; if (ScoreP1 == ScoreLimit || ScoreP2 == ScoreLimit) { LoadScene(3); StartCoroutine("SetScore"); GameState = Enum.GameState.Victory; } else if (P1Run) { StartCoroutine("SpawnPlayer"); } else if (P1Run == false) { StartCoroutine("SpawnPlayer"); } ScoreAdded = true; } EndRoundCRRunning = false; }
/// <summary> /// A felhasználói felület képernyőre rajzolt része. /// </summary> void OnGUI() { int ScrW = Screen.width, ScrX = !SBS.Enabled ? ScrW : ScrW / 2, ScrY = Screen.height; float BoxW = ScrX / 5, BoxH = ScrX / 24, HBoxW = BoxW / 2; GUI.skin.box.fontSize = ScrX / 32; foreach (MenuItem Item in MenuItems) { float MarginLeft = Item.ActualScrPos.x - HBoxW; GUI.Box(new Rect(MarginLeft, ScrY - Item.ActualScrPos.y + ScrY / 15, BoxW, BoxH), Item.Action); if (SBS.Enabled) { GUI.Box(new Rect(MarginLeft > ScrX ? MarginLeft - ScrX : MarginLeft + ScrX, ScrY - Item.ActualScrPos.y + ScrY / 15, BoxW, BoxH), Item.Action); } } if (Playing) // Játék { int Margin = ScrY / 20; GUI.skin.label.alignment = TextAnchor.UpperRight; GUI.skin.label.fontSize = ScrY / 10; Rect RightRect = new Rect(0, Margin, ScrX - Margin, ScrY); if (GameMode == GameModes.ScoreAttack) { Utils.ShadedLabel(RightRect, Lives == 3 ? "♥♥♥" : Lives == 2 ? "♥♥" : "♥", Color.red); } else if (GameMode == GameModes.Multiplayer) { Utils.ShadedLabel(RightRect, ScoreP2.ToString(), Color.blue); } else { Utils.ShadedLabel(RightRect, Mathf.CeilToInt(TimeRemaining).ToString(), Color.red); } GUI.color = Color.green; if (GameMode == GameModes.Multiplayer) { GUI.skin.label.alignment = TextAnchor.UpperCenter; Utils.ShadedLabel(new Rect(0, Margin, ScrX, ScrY), Lives == 3 ? "♥♥♥" : Lives == 2 ? "♥♥" : "♥", Color.red); } GUI.skin.label.alignment = TextAnchor.UpperLeft; Utils.ShadedLabel(new Rect(Margin, Margin, ScrX, ScrY), Score.ToString(), Color.green); if (GameMode != GameModes.Multiplayer) { int TopScore = TopScores[(int)GameMode]; if (TopScore != 0) { int HighTop = Margin + GUI.skin.label.fontSize; GUI.skin.label.fontSize /= 2; Utils.ShadedLabel(new Rect(Margin, HighTop, ScrX, ScrY), "Best: " + (TopScore > Score ? TopScore : Score), TopScore < Score ? Color.green : Color.white); } } GUI.color = Color.white; } else if (SelectedMenu == 3) // Game over { GUI.skin.label.alignment = TextAnchor.UpperCenter; int Top = GUI.skin.label.fontSize = ScrY / 10, TopScore; if (GameMode != GameModes.Multiplayer) { Utils.ShadedLabel(new Rect(0, Top += GUI.skin.label.fontSize, ScrX, ScrY), GameMode == GameModes.ScoreAttack ? "Game Over" : "Time Up", Color.white); TopScore = TopScores[(int)GameMode]; if (Score != TopScore) { Utils.ShadedLabel(new Rect(0, Top += GUI.skin.label.fontSize, ScrX, ScrY), "High score: " + TopScore, Color.white); } GUI.skin.label.fontSize = ScrY / 8; Utils.ShadedLabel(new Rect(0, Top += GUI.skin.label.fontSize, ScrX, ScrY), (Score == TopScore ? "New high score: " : "Score: ") + Score, Score == TopScore ? Color.green : Color.red); } else { Utils.ShadedLabel(new Rect(0, Top += GUI.skin.label.fontSize, ScrX, ScrY), Score == ScoreP2 ? "Draw" : Score > ScoreP2 ? "Player 1 wins" : "Player 2 wins", Color.white); GUI.skin.label.fontSize = ScrY / 8; Utils.ShadedLabel(new Rect(0, Top += GUI.skin.label.fontSize, ScrX, ScrY), "P1 : " + Score + " | " + ScoreP2 + " : P2", Color.blue); } } else if (SelectedMenu == 0) // Főmenü { Rect InfoRect = new Rect(Screen.width - 30, 5, 20, 20); GUI.Button(InfoRect, "?"); Vector2 MousePos = new Vector2(Input.mousePosition.x, Screen.height - Input.mousePosition.y); if (InfoRect.Contains(MousePos)) { GUI.skin.box.fontSize = 12; GUI.Box(new Rect(MousePos.x - 200, MousePos.y, 200, 65), "LEGO kör - http://lego.sch.bme.hu\nBence Sgánetz\nÁdám Szi\nModels by Ákos Tóth"); } } }
// Update is called once per frame void Update() { if (Input.GetKeyDown(KeyCode.Escape)) { switch (SceneManager.GetActiveScene().name) { case "MainMenu": LoadScene(-1); break; case "SelectMenu": LoadScene(0); break; case "Credits": LoadScene(0); break; case "Grab&Rush": if (GameState != Enum.GameState.MenuPause) { TMP = GameState; GameState = Enum.GameState.MenuPause; GameObject.Find("Canvas").gameObject.transform.Find("Menu").gameObject.SetActive(true); Time.timeScale = 0f; } else if (GameState == Enum.GameState.MenuPause) { GameObject.Find("Menu").SetActive(false); GameState = TMP; Time.timeScale = 1f; } break; } } switch (GameState) //Permet de gérer le jeu selon son état GameState { case Enum.GameState.MainMenu: //Menu principal break; case Enum.GameState.BallSelect: //Selection de la boule/Skin, score max break; case Enum.GameState.GamePhaseP1Run: //Phase de jeu, le joueur 1 court ScoreText = GameObject.Find("Score").GetComponent <Text>(); ScoreText.text = ScoreP1.ToString() + " - " + ScoreP2.ToString(); P1Run = true; ScoreAdded = false; break; case Enum.GameState.GamePhaseP2Run: //Phase de jeu, le joueur 2 court ScoreText = GameObject.Find("Score").GetComponent <Text>(); ScoreText.text = ScoreP1.ToString() + " - " + ScoreP2.ToString(); P1Run = false; ScoreAdded = false; break; case Enum.GameState.MenuPause: //Menu pause en jeu break; case Enum.GameState.EndRound: //Fin du round, phase de transition et d'ajout au score EndRound = GameObject.Find("EndRound").GetComponent <Text>(); if (EndRoundCRRunning == false) { StartCoroutine(EndRoundCR()); } break; case Enum.GameState.Victory: //Fin de la partie, afficher le score et recommencer/arreter de jouer break; case Enum.GameState.Credits: //Generique break; default: break; } }