private Vector3 checkpoint;

void SetCheckpoint()
{
    checkpoint =
        transform.position;
}

void Respawn()
{
    transform.position =
        checkpoint;
}

With CharacterController, temporarily disable it while teleporting if needed.