@YuraYuraYuraYura
Студент. Учусь программировать

Почему спринт продолжает работать после срабатывания прыжка?

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CharacterControl: MonoBehaviour
{
    //скорость персонажа
    public float speed = 4.0f;
    //скорость прыжка персонажа
    public float jumpSpeed = 8.0f;
    //переменная гравитации персонажа
    public float gravity = 20.0f;
    // переменная движения персонажа 
    private Vector3 moveDir = Vector3.zero;
    //переменная CharacterController
    private CharacterController controller;
    
    void Start()
    {
        controller = GetComponent<CharacterController>();

    }

    void Update()
    {
        if (controller.isGrounded)
        {
            
            moveDir = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
            moveDir = transform.TransformDirection(moveDir);
            moveDir *= speed;
        }

        if(Input.GetKeyDown(KeyCode.Space)&& controller.isGrounded)
        {
            moveDir.y = jumpSpeed;
        }

        moveDir.y -= gravity * Time.deltaTime;
        controller.Move(moveDir * Time.deltaTime);

         //начал делать спринт и вот здесь косяк
         if (Input.GetKey(KeyCode.LeftShift)&& controller.isGrounded)
        {
            speed = 10.0F; 
        }
         else if (Input.GetKeyUp(KeyCode.LeftShift) && controller.isGrounded)
       {
            speed = 4.0F;
        }
    }
}


Если во время спринта прыгнуть, спринт как бы залипает и ждет еще одного нажатия шифта, чтобы вернуться к обычной скорости. Может кто сталкивался с подобным?
  • Вопрос задан
  • 59 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы