Не работает механика Dash Unity2d

При написании кода для механики Dash возникает баг-ошибка. Ошибок Unity не выдаёт, но игрок не правильно себя ведёт. Вместо того чтобы быстро переместиться в другую точку. Он как-бы использует эффект парения. P.S. код dash писал в другом скрипте (не в скрипте игрока). В будущем (когда dash будет работать) я перенесу в скрипт игрока Вот мой код:

    [SerializeField] private float _dashingVelocity = 14f;
    [SerializeField] private float _dashingTime = 0.5f;

    private Rigidbody2D _rigidbody;
    private Vector2 _dashingDir;
    private bool _isDashing;
    private bool _canDash = true;
 
    private void Start()
    {
        _rigidbody = GetComponent<Rigidbody2D>();
    }

    private void Update()
    {
        var inputX = Input.GetAxisRaw("Horizontal");
        var dashInput = Input.GetButtonDown("Dash");

        if (Input.GetKeyDown(KeyCode.LeftShift) && _canDash)
        {
            _isDashing = true;
            _canDash = false;
            _dashingDir = new Vector2(inputX, 0);
        
            if (_dashingDir == Vector2.zero)
            {
                _dashingDir = new Vector2(transform.localScale.x, 0);
            }
            StartCoroutine(StopDashing());
        }
        if (_isDashing)
        {
            if(inputX == 1)
            {
                _rigidbody.velocity = Vector2.right * _dashingVelocity;
                return;
            }
            else if(inputX == -1)
            {
                _rigidbody.velocity = Vector2.left * _dashingVelocity;
                return;
            }
        }

        if(Chara._isGrounded)
        {
            _canDash = true;
        }
    }

    private IEnumerator StopDashing()
    {
        yield return new WaitForSeconds(_dashingTime);

        _isDashing = false;
    }

Заранее спасибо!


Ответы (0 шт):