void Update()
{
if (IsGrounded())
{
_isJumping = false;
_wasGrounded = true;
_lastGroundedTime = Time.time;
}
else if (Time.time - _lastGroundedTime > MaxGroundedJumpTime)
{
_wasGrounded = false;
_isJumping = false;
}
var canJump = Time.time - _lastJumpTime > MaxJumpDelay;
if (Input.GetKeyDown(KeyCode.Space) && _wasGrounded && !_isJumping && canJump)
{
_isJumping = true;
_lastJumpTime = Time.time;
var rigidbody = GetComponent<Rigidbody>();
rigidbody.velocity = new Vector3(rigidbody.velocity.x, 0, rigidbody.velocity.z);
rigidbody.AddForce(0, JumpForce, 0);
}
}