Esempio n. 1
0
    void Update()
    {
        //Если игрок на земле
        if (_controller.isGrounded)
        {
            //Записываем значения нажатых клавиш
            _vertical   = _input.Vertical();
            _horizontal = _input.Horizontal();

            //Текущая гравитация - земля
            _gravity = groundGravity;

            //Направление движения
            _dir  = _transform.TransformDirection(_horizontal, 0.0f, _vertical);
            _dir *= speedMove;

            //Если нажаты кнопки перемещения
            if (_vertical != 0.0f || _horizontal != 0.0f)
            {
                //Включение анимации ходьбы у камеры
                _camAnimator.SetBool("Moving", true);
            }
            else
            {
                //Выключение анимации ходьбы у камеры
                _camAnimator.SetBool("Moving", false);
            }

            //Прыжок
            if (_isJumping == true)
            {
                _dir.y = jump;
                _camAnimator.SetBool("Moving", false);
                _isJumping = false;
            }
        }
        else
        {
            //Если не на земле тогда текущая гравитация - в воздухе
            _gravity = airGravity;
        }

        //Перемещение персонажа
        _dir.y -= _gravity * Time.deltaTime;
        _controller.Move(_dir * Time.deltaTime);
    }
Esempio n. 2
0
    // Update is called once per frame
    void Update()
    {
        var   interaction = PlayerPrefs.GetInt("ControlType");
        float eixoX       = 0;
        float eixoY       = 0;

        // Interação por Controle Virtual - 0
        if (interaction == 0)
        {
            // Caso selecionado uma mão - 0 , deverá receber qual delas é utilizada pelo jogador.
            ControlSide = PlayerPrefs.GetInt("ControlSide");
            LeftJoystick.gameObject.SetActive(ControlSide == 0);
            RightJoystick.gameObject.SetActive(ControlSide == 1);



            if (ControlSide == 0)
            {
                eixoX = LeftJoystick.Horizontal();
                eixoY = LeftJoystick.Vertical();
            }
            else if (ControlSide == 1)
            {
                eixoX = RightJoystick.Horizontal();
                eixoY = RightJoystick.Vertical();
            }
            if (Control3D)
            {
                if (eixoX != 0 || eixoY != 0)
                {
                    transform.Translate(0, 0, eixoY);
                    transform.Rotate(0, eixoX, 0);
                }
            }
            else
            {
                if (eixoX > 0)
                {
                    transform.localEulerAngles = new Vector3(0, -90, 0);
                    transform.Translate(0, 0, eixoX / 4);
                }
                else if (eixoX < 0)
                {
                    transform.localEulerAngles = new Vector3(0, 90, 0);
                    transform.Translate(0, 0, -eixoX / 4);
                }
            }
        }
        // Interação por dispositivos externos (Cabo UTG ou Bluetooth) - 1
        else if (interaction == 1)
        {
            SpeedControl = PlayerPrefs.GetFloat("SpeedControl");

            // Ocultando controles
            LeftJoystick.gameObject.SetActive(false);
            RightJoystick.gameObject.SetActive(false);

            // Pegando valores de entrada dos controles
            eixoX = Input.GetAxis("Horizontal") * SpeedControl * 2;
            eixoY = Input.GetAxis("Vertical") * SpeedControl / 2;

            // Controle 3D
            if (Control3D)
            {
                if (eixoX != 0 || eixoY != 0)
                {
                    transform.Translate(0, 0, eixoY);
                    transform.Rotate(0, eixoX, 0);
                }
            }
            else
            // Controle 2D
            {
                if (eixoX > 0)
                {
                    transform.localEulerAngles = new Vector3(0, -90, 0);
                    transform.Translate(0, 0, eixoX / 4);
                }
                else if (eixoX < 0)
                {
                    transform.localEulerAngles = new Vector3(0, 90, 0);
                    transform.Translate(0, 0, -eixoX / 4);
                }
            }
        }
        // Interação de forma Guiada - 2
        else if (interaction == 2)
        {
            // Ocultando controles
            LeftJoystick.gameObject.SetActive(false);
            RightJoystick.gameObject.SetActive(false);
        }

        if (HasAnimator)
        {
            if (eixoX != 0 || eixoY != 0)
            {
                animator.SetBool("isWalking", true);
            }
            else
            {
                animator.SetBool("isWalking", false);
            }
        }
    }