A better way to play animation after another finishes?

So, I’m using the Animator and I need to play an animation once then play the second one after the first one finishes (It’s a run animation, in the first part she prepares to run and in the second part is the run cycle).
I’m new to using the Animator and I don’t really know how to use it perfectly.
I’m using this method below, the problem is that once the running animation is triggered even if I stop pressing the run button the animation finishes its cycle before stopping.
ps: I’m using CrossPlatformInputManager for the input.

float controlThrow = CrossPlatformInputManager.GetAxis("Horizontal");
Vector2 playerVelocity = new Vector2(controlThrow * runSpeed, myRigidBody.velocity.y);
myRigidBody.velocity = playerVelocity;

bool playerHasHorizontalSpeed = Mathf.Abs(myRigidBody.velocity.x) > Mathf.Epsilon;
myAnimator.SetBool("RunningPrep", playerHasHorizontalSpeed);
if (myAnimator.GetCurrentAnimatorStateInfo(0).normalizedTime > 1 && !myAnimator.IsInTransition(0))
{
    myAnimator.SetBool("Running", playerHasHorizontalSpeed);
}

Do you have any idea on how can I make the animation stop when I’m not pressing the button?

Nevermind, I actually fixed it adding a duration to the transition between “RunningPrep” and “Running” and by using a float instead of a boolean.

The float has the absolute value of "controlThrow " and when it’s greater than 0.01 the run animation is displayed.

The code right now is simply

`// Move The Player
float controlThrow = CrossPlatformInputManager.GetAxis(“Horizontal”);
Vector2 playerVelocity = new Vector2(controlThrow * runSpeed, myRigidBody.velocity.y);
myRigidBody.velocity = playerVelocity;

// Run Animation
myAnimator.SetFloat(“Run”, Mathf.Abs(controlThrow));`