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); }
// 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); } } }