El salto depende del sistema de movimiento que estés usando.

CharacterController

[SerializeField]
private float alturaSalto = 2f;

if (controller.isGrounded &&
    jumpAction.action.WasPressedThisFrame())
{
    velocidadVertical = Mathf.Sqrt(
        alturaSalto * -2f * gravedad
    );
}

Rigidbody con impulso

if (enSuelo &&
    jumpAction.action.WasPressedThisFrame())
{
    rb.AddForce(
        Vector3.up * fuerzaSalto,
        ForceMode.Impulse
    );
}

Evitar salto infinito

Siempre comprobá que el personaje esté en el suelo.

Ejemplos:

controller.isGrounded

o una comprobación propia con Raycast/SphereCast.


Salto variable

Podés hacer que el salto dependa del tiempo que se mantiene el botón.

Ejemplo conceptual:

toque corto → salto bajo
mantener → salto más alto

Esto suele combinar: