Пример #1
0
    // Перемещение кошки
    void Moving()
    {
        // Вычисление смещения кошки по горизонтали
        X_Move = X_Move + X_Direction * Time.deltaTime;
        if (X_Move > 1.0f)
        {
            X_Move = 1.0f;
        }
        if (X_Move < -1.0f)
        {
            X_Move = -1.0f;
        }

        // Вычисление смещения кошки по вертикали
        Y_Move = Y_Move + Y_Direction * Time.deltaTime;
        if (Y_Move > 1.0f)
        {
            Y_Move = 1.0f;
        }
        if (Y_Move < -1.0f)
        {
            Y_Move = -1.0f;
        }
        Vector3 Move = new Vector3(X_Move, 0.0f, Y_Move);

        // Передача информации кошке о том, куда она должна двигаться
        HellCat_Object = GameObject.Find("HellCat(Clone)");

        //HellCat_Object = GameObject.FindGameObjectWithTag("Player");
        HellCat_Controller = HellCat_Object.GetComponent <Player_Controller>();
        HellCat_Controller.HellCat_Object = HellCat_Object;

        MoveStruct MoveAngle;

        MoveAngle.Move  = Move;
        MoveAngle.Angle = HellCat_Object.GetComponent <Rigidbody>().rotation.eulerAngles.y;

        HellCat_Controller.BroadcastMessage("Go", MoveAngle);
    }
Пример #2
0
    // При показе интерфейса
    void OnGUI()
    {
        X_Cell = Screen.width / 15;
        Y_Cell = Screen.height / 10;

        // В меню:
        if (Application.loadedLevelName == "Game_Menu")
        {
            currentLevel = PlayerPrefs.GetString("Level");
            if (currentLevel != "")
            {
                if (GUI.Button(new Rect(6 * X_Cell, 5 * Y_Cell, 3 * X_Cell, 1 * Y_Cell), "Заново"))
                {
                    Application.LoadLevel(currentLevel);
                }
                if (GUI.Button(new Rect(6 * X_Cell, 6 * Y_Cell, 3 * X_Cell, 1 * Y_Cell), "Загрузить"))
                {
                    Application.LoadLevel("Game_Load");
                }
                if (GUI.Button(new Rect(6 * X_Cell, 7 * Y_Cell, 3 * X_Cell, 1 * Y_Cell), "Выйти"))
                {
                    PlayerPrefs.SetString("Level", "");
                    Application.Quit();
                }
                if (GUI.Button(new Rect(6 * X_Cell, 8 * Y_Cell, 3 * X_Cell, 1 * Y_Cell), Start_Number.ToString()))
                {
                    Application.LoadLevel(currentLevel);
                }
            }
            else
            {
                // Рисуются 2 кнопки: "Играть"(открывает сцену выбора уровня) и "Выйти"(закрывает игру)
                if (GUI.Button(new Rect(6 * X_Cell, 5 * Y_Cell, 3 * X_Cell, 1 * Y_Cell), "Играть"))
                {
                    Application.LoadLevel("Game_Load");
                }
                if (GUI.Button(new Rect(6 * X_Cell, 6.5f * Y_Cell, 3 * X_Cell, 1 * Y_Cell), "Выйти"))
                {
                    PlayerPrefs.SetString("Level", "");
                    Application.Quit();
                }
            }
        }

        // В окне загрузки уровней:
        else if (Application.loadedLevelName == "Game_Load")
        {
            // Рисуется прямоугольник меню и кнопки загрузки каждого уровня,
            // а также в настройках сохраняется, какой уровень был загружен
            currentLevel = "";

            GUI.skin.box.fontSize  = 20;
            GUI.skin.box.alignment = TextAnchor.UpperCenter;
            GUI.Box(new Rect(4 * X_Cell, 1 * Y_Cell, 7 * X_Cell, 8 * Y_Cell), "Загрузить уровень");

            if (GUI.Button(new Rect(5 * X_Cell, 4f * Y_Cell, 5 * X_Cell, 1 * Y_Cell), "Уровень 1"))
            {
                currentLevel = "Level_01";
            }
            if (GUI.Button(new Rect(5 * X_Cell, 6f * Y_Cell, 5 * X_Cell, 1 * Y_Cell), "Уровень 2"))
            {
                currentLevel = "Level_02";
            }

            if (currentLevel != "")
            {
                Application.LoadLevel(currentLevel);
                PlayerPrefs.SetString("Level", currentLevel);
            }
        }

        // В окне смерти от воина пишется сообщение о смерти и кнопка перехода в меню
        else if (Application.loadedLevelName == "Game_Over_Killed")
        {
            GUI.skin.box.fontSize  = 36;
            GUI.skin.box.alignment = TextAnchor.MiddleCenter;
            GUI.Box(new Rect(1 * X_Cell, 1 * Y_Cell, 13 * X_Cell, 8 * Y_Cell),
                    "Смерть.\r\nВоин убил кошку.");
            if (GUI.Button(new Rect(6 * X_Cell, 0 * Y_Cell, 3 * X_Cell, 1 * Y_Cell), "Меню"))
            {
                Application.LoadLevel("Game_Menu");
            }
        }

        // В окне проигрыша пишется сообщение о проигрыше и кнопка перехода в меню
        else if (Application.loadedLevelName == "Game_Over")
        {
            GUI.skin.box.fontSize  = 36;
            GUI.skin.box.alignment = TextAnchor.MiddleCenter;
            GUI.Box(new Rect(1 * X_Cell, 1 * Y_Cell, 13 * X_Cell, 8 * Y_Cell),
                    "Проигрыш.\r\nВоин забрал сокровище.");
            if (GUI.Button(new Rect(6 * X_Cell, 0 * Y_Cell, 3 * X_Cell, 1 * Y_Cell), "Меню"))
            {
                Application.LoadLevel("Game_Menu");
            }
        }

        // В окне победы пишется сообщение о победе и кнопка перехода в меню
        else if (Application.loadedLevelName == "Game_Winner")
        {
            GUI.skin.box.fontSize  = 36;
            GUI.skin.box.alignment = TextAnchor.MiddleCenter;
            GUI.Box(new Rect(1 * X_Cell, 1 * Y_Cell, 13 * X_Cell, 8 * Y_Cell),
                    "Победа!\r\nВоин загнан в ловушку.");
            if (GUI.Button(new Rect(6 * X_Cell, 0 * Y_Cell, 3 * X_Cell, 1 * Y_Cell), "Меню"))
            {
                Application.LoadLevel("Game_Menu");
            }
        }

        // В окне любого уровня:
        else
        {
            if (Game_Mode == false)
            {
                Menu_Trap_Grib_Button_Status = GUI.Button(new Rect(1 * X_Cell, 1 * Y_Cell, 2 * X_Cell, 2 * Y_Cell), "");
                GUI.Box(new Rect(1 * X_Cell, 1 * Y_Cell, 2 * X_Cell, 2 * Y_Cell), Menu_Trap_Grib_GUI_Texture);

                if (true == Menu_Trap_Grib_Button_Status)
                {
                    if (Menu_Trap_Grib_Counter > 0)
                    {
                        Menu_Trap_Grib_Function_Flag = true;
                    }
                    else
                    {
                        Menu_Trap_Grib_Function_Flag = false;
                    }
                }

                Menu_Trap_Lovushka_Button_Status = GUI.Button(new Rect(3 * X_Cell, 1 * Y_Cell, 2 * X_Cell, 2 * Y_Cell), "");
                GUI.Box(new Rect(3 * X_Cell, 1 * Y_Cell, 2 * X_Cell, 2 * Y_Cell), Menu_Trap_Lovushka_GUI_Texture);
                if (true == Menu_Trap_Lovushka_Button_Status)
                {
                    if (Menu_Trap_Lovushka_Counter > 0)
                    {
                        Menu_Trap_Lovushka_Function_Flag = true;
                    }
                    else
                    {
                        Menu_Trap_Lovushka_Function_Flag = false;
                    }
                }

                if ((Menu_Trap_Lovushka_Counter <= 0) && (Menu_Trap_Grib_Counter <= 0))
                {
                    Game_Mode = true;
                }
            }

            // Рисуется кнопка: "Пауза"(открывает меню)
            if (GUI.Button(new Rect(5 * X_Cell, 0 * Y_Cell, 3 * X_Cell, 1 * Y_Cell), "Пауза"))
            {
                Application.LoadLevel("Game_Menu");
            }

            // Кнопка "Камера"
            MainCamera = GameObject.Find("Camera(Clone)").GetComponent <Camera_Controller>();
            //MainCamera = GameObject.Find("Camera").GetComponent<Camera_Controller>();
            if (GUI.Button(new Rect(8 * X_Cell, 0 * Y_Cell, 3 * X_Cell, 1 * Y_Cell), "Камера"))
            {
                MainCamera.BroadcastMessage("SetCamera");
            }

            if ((Application.loadedLevelName != "Game_Over") &&
                (Application.loadedLevelName != "Game_Over_Killed") &&
                (Application.loadedLevelName != "Game_Winner") &&
                Game_Mode)
            {
                // Рисование джойстика с наложением на него текстуры
                GamePad_Rect        = new Rect(1 * Y_Cell, 6 * Y_Cell, 3 * Y_Cell, 3 * Y_Cell);
                GUI.backgroundColor = new Color();
                GUI.Box(GamePad_Rect, GamePad_Texture);

                //Кнопка "Режим"

                HellCat_Controller = GameObject.Find("HellCat(Clone)").GetComponent <Player_Controller>();
                //HellCat_Controller = GameObject.Find("Player").GetComponent<Player_Controller>();
                HellCat_Controller = HellCat_Object.GetComponent <Player_Controller>();
                if (GUI.Button(new Rect(11 * X_Cell, 7 * Y_Cell, 3 * X_Cell, 1 * Y_Cell), "Режим"))
                {
                    HellCat_Controller.BroadcastMessage("Mode");
                }

                // Отслеживание, какая кнопка интерфейса нажата - от этого зависит направление движения
                if (Input.GetMouseButton(0))
                {
                    float x = Input.mousePosition.x;
                    float y = Input.mousePosition.y;

                    // Если курсор перемещается внутри джойстика
                    if (x >= 1 * Y_Cell && x <= 4 * Y_Cell && y >= 1 * Y_Cell && y <= 4 * Y_Cell)
                    {
                        // Рисование джойстика с наложением на него текстуры
                        GamePad_Point_Rect  = new Rect(x - 0.5f * Y_Cell, -y + 9f * Y_Cell, 1 * Y_Cell, 1 * Y_Cell);
                        GUI.backgroundColor = new Color();
                        GUI.Box(GamePad_Point_Rect, GamePad_Point_Texture);                         //, GamePad_Style);

                        X_Move      = 0;
                        Y_Move      = 0;
                        X_Direction = x - 2.5f * Y_Cell;
                        Y_Direction = y - 2.5f * Y_Cell;
                        Moving();
                    }
                    else
                    {
                        // Рисование джойстика с наложением на него текстуры
                        GamePad_Point_Rect  = new Rect(2 * Y_Cell, 7f * Y_Cell, 1 * Y_Cell, 1 * Y_Cell);
                        GUI.backgroundColor = new Color();
                        GUI.Box(GamePad_Point_Rect, GamePad_Point_Texture);

                        X_Move = 0;
                        Y_Move = 0;
                    }
                }
                else
                {
                    X_Move = 0;
                    Y_Move = 0;
                    // Рисование джойстика с наложением на него текстуры
                    GamePad_Point_Rect  = new Rect(2 * Y_Cell, 7f * Y_Cell, 1 * Y_Cell, 1 * Y_Cell);
                    GUI.backgroundColor = new Color();
                    GUI.Box(GamePad_Point_Rect, GamePad_Point_Texture);
                }
            }
        }
    }