Ejemplo n.º 1
0
    //Повернуть камеру на указанный угл
    public void ViewAngleCalc()
    {
        //Сперва проверяем активен ли гейм плей и Активно ли управление мышью
        if (gameController.GamePlay_yn && gameController.Mouse_control_yn && gameplayParametrs != null && !gameplayParametrs.pause)
        {
            //блочим курсор
            if (Cursor.lockState != CursorLockMode.Locked && mouse_control_on)
            {
                Cursor.lockState = CursorLockMode.Locked;
                Cursor.visible   = false;
            }
            else if (!mouse_control_on && old_mouse_lock == true)
            {
                old_mouse_lock   = false;
                Cursor.lockState = CursorLockMode.None;
                Cursor.visible   = true;
            }

            float dx = Input.GetAxis("Mouse X");
            float dy = Input.GetAxis("Mouse Y");

            PiiController piiController = bolt.GetComponent <PiiController>();

            //меняем угл просмотра
            if (seting == null && mouse_control_on)
            {
                ViewAngle_y += dx * MouseSpeed * Time.deltaTime;
                ViewAngle_x -= dy * MouseSpeed * Time.deltaTime;
            }
            else if (seting != null && seting.game != null && mouse_control_on)
            {
                if (!piiController.ChargeOn)
                {
                    ViewAngle_y += dx * seting.game.speedController * 0.5f;
                    ViewAngle_x -= dy * seting.game.speedController * 0.5f;
                }
                else
                {
                    ViewAngle_y += dx * seting.game.speedController * Time.deltaTime;
                    ViewAngle_x -= dy * seting.game.speedController * Time.deltaTime;
                }
            }

            //Debug.Log(mouse_pos_old_y + "  " + Input.mousePosition.y);
            //Cursor.lockState = CursorLockMode.None;

            float view_angle_new_x = ViewAngle_x - (view_angle_old_x - ViewAngle_x) / 1.1f;
            float view_angle_new_y = ViewAngle_y - (view_angle_old_y - ViewAngle_y) / 1.1f;



            view_angle_old_x = ViewAngle_x;
            view_angle_old_y = ViewAngle_y;


            //ViewAngle_x = view_angle_new_x;
            //ViewAngle_y = view_angle_new_y;

            //PiiController piiController = bolt.GetComponent<PiiController>();
            //Расчет постоянного смещения
            //inerciaPii.NewCalc();
            float piicoof = piiController.speed_pii / 10;
            if (piicoof > 1)
            {
                piicoof = 1;
            }
            if (piiController.ChargeOn)
            {
                inerciaPii.NewCalc();
                ViewAngle_x += (inerciaPii.Smehenie.x / 6) * piicoof;
                ViewAngle_y += (inerciaPii.Smehenie.y / 6) * piicoof;

                ViewAngle_x = view_angle_new_x;
                ViewAngle_y = view_angle_new_y;
            }
            else
            {
                //ViewAngle_x += (inerciaPii.Smehenie.x / 3) * piicoof;
                //ViewAngle_y += (inerciaPii.Smehenie.y / 3) * piicoof;
            }

            //}


            //Проверяем границы
            if (ViewAngle_x > 50)
            {
                ViewAngle_x = 50;
            }
            else if (ViewAngle_x < -60)
            {
                ViewAngle_x = -60;
            }

            //Границы по бокам ограничиваем ускорением в противоположную сторону
            float ViewAngle_y_max = 85;
            if (ViewAngle_y > ViewAngle_y_max)
            {
                //ViewAngle_y = 50;
                float raznica = ViewAngle_y - ViewAngle_y_max;
                if (!piiController.ChargeOn)
                {
                    ViewAngle_y -= raznica / 2 * Time.deltaTime * 5;
                }
                else
                {
                    ViewAngle_y -= raznica / 2 * Time.deltaTime;
                }
                endViewWindow.set_all_need(0, raznica / 30, 0, 0);
            }
            else if (ViewAngle_y < -1 * ViewAngle_y_max)
            {
                //ViewAngle_y = -50;
                float raznica = ViewAngle_y + ViewAngle_y_max;
                if (!piiController.ChargeOn)
                {
                    ViewAngle_y -= raznica / 2 * Time.deltaTime * 5;
                }
                else
                {
                    ViewAngle_y -= raznica / 2 * Time.deltaTime;
                }
                endViewWindow.set_all_need(-1 * raznica / 30, 0, 0, 0);
            }

            //Меняем данные у обьектов
            gameObject.transform.eulerAngles = new Vector3(0, ViewAngle_y);

            float presure = bolt.GetComponent <PiiController>().speed_pii;

            camera.transform.eulerAngles = new Vector3(ViewAngle_x + ViewCamMinus, ViewAngle_y);
            bolt.transform.eulerAngles   = new Vector3(ViewAngle_x + presure * 0.4f, ViewAngle_y);

            //Визуализация лицевого индикатора
            if (faceController != null)
            {
                faceController.set_face_grad(ViewAngle_y);
            }
        }
        else if (gameplayParametrs.pause)
        {
            if (!mouse_control_on && old_mouse_lock == true || Cursor.lockState == CursorLockMode.Locked)
            {
                old_mouse_lock   = false;
                Cursor.lockState = CursorLockMode.None;
                Cursor.visible   = true;
            }
        }
    }