Как сделать двойной прыжок

Всем привет друзья! Пытаюсь сделать двойной прыжок как на видео Chameleon Run 2:45 min time code

-Первый длинный если долго зажать пробел

-Второй прыжок просто тапаешь и он просто прыгает один раз, т.е. как добавочный прыжок.

Реализовал всю логику, но она мне не нравится, хочу более экспертного мнения, как такое можно реализовать:

public class PlayerJumper : MonoBehaviour
{
    [SerializeField] private float _secondJumpFroce;
    [SerializeField] private float _firstJumpForce;
    [SerializeField] private float _maxHeightOfJump;
    [SerializeField] private Vector3 _normalizedDirection;

    private Rigidbody _rigidbody;
    private bool _canJumpInAir = true;
    private float _jumpKeystrokeAmount = 0;

    private void Awake()
    {
        _rigidbody = GetComponent<Rigidbody>();
    }

    private void Update()
    {
        //second time jump
        if (Input.GetKeyDown(KeyCode.Space) && _jumpKeystrokeAmount == 1)
        {
            //set velocity.y to zero so
            //we dont need to overcome Y force (which has negative value) when second jump
            if (_rigidbody.velocity.y < 0)
            {
                _rigidbody.velocity = new Vector3(_rigidbody.velocity.x, 0);
            }

            _rigidbody.AddForce(Vector3.up * _secondJumpFroce, ForceMode.VelocityChange);
        }

        if (Input.GetKeyDown(KeyCode.Space))
        {
            _jumpKeystrokeAmount++;
        }
    }

    private void FixedUpdate()
    {
        //first time jump
        if (Input.GetKey(KeyCode.Space) && _jumpKeystrokeAmount == 1 && _canJumpInAir == true)
        {
            _rigidbody.AddForce(_normalizedDirection * _firstJumpForce, ForceMode.Impulse);

            //JumpHeight limitation
            if (_rigidbody.velocity.y >= _maxHeightOfJump)
            {
                _canJumpInAir = false;
            }
        }
    }

    private void OnCollisionEnter(Collision collision)
    {
        _canJumpInAir = true;
        _jumpKeystrokeAmount = 0;
    }
}

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