El salto depende del sistema de movimiento que estés usando.
[SerializeField]
private float alturaSalto = 2f;
if (controller.isGrounded &&
jumpAction.action.WasPressedThisFrame())
{
velocidadVertical = Mathf.Sqrt(
alturaSalto * -2f * gravedad
);
}
if (enSuelo &&
jumpAction.action.WasPressedThisFrame())
{
rb.AddForce(
Vector3.up * fuerzaSalto,
ForceMode.Impulse
);
}
Siempre comprobá que el personaje esté en el suelo.
Ejemplos:
controller.isGrounded
o una comprobación propia con Raycast/SphereCast.
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: