Я реализовал это путем изменения преобразования, а также применения скорости, но не получил эту плавность.
// In Update
if (Input.GetKeyDown("space"))
{
isJumping = true;
StartCoroutine(Jump());
isJumping = false;
}
IEnumerator Jump()
{
if (IsGrounded())
{
isJumping = true;
player.gravityScale = gravityDuringJump;
player.velocity = new Vector2(jumpSpeedInX, jumpSpeedInY);
}
yield return new WaitUntil(() => IsGrounded() == false);
isJumping = false;
}