Podés cambiar la velocidad del personaje según el estado.

Variables

[SerializeField]
private float velocidadCaminar = 4f;

[SerializeField]
private float velocidadCorrer = 7f;

Elegir velocidad

bool corriendo =
    sprintAction.action.IsPressed();

float velocidadActual =
    corriendo
        ? velocidadCorrer
        : velocidadCaminar;

Movimiento

controller.Move(
    direccion * velocidadActual * Time.deltaTime
);

Sprint con energía

if (corriendo && energia > 0f)
{
    energia -= consumo * Time.deltaTime;
}

Evitar sprint sin movimiento

bool seMueve =
    direccion.sqrMagnitude > 0.01f;

bool corriendo =
    sprintAction.action.IsPressed() &&
    seMueve;

Resumen rápido

float velocidad =
    sprint
        ? velocidadCorrer
        : velocidadCaminar;