Quick answer: Your Animation Blueprint likely lacks a Slot node for the montage’s slot. Add a Slot node (matching DefaultSlot or custom name) in the AnimGraph, feeding locomotion through it. Without the Slot, the graph has no underlying pose to blend back to.

Here is how to fix Unreal Animation Montage not blending out. You play an attack montage. The swing plays. At the end of the montage, the character freezes mid-pose instead of returning to the idle/walk state machine. Or the montage never stops playing. Montages need explicit Slot plumbing in the Animation Blueprint to blend back to the state machine.

The Symptom

After a montage finishes, the character stays frozen in the final frame. Or the montage appears to loop because the state machine is not resuming. Or blending happens but to a default T-pose.

What Causes This

No Slot node in AnimGraph. Montages play on named slots. The AnimGraph must have a Slot node matching the slot name. Without it, the montage plays into nothing.

Slot name mismatch. Default slot is “DefaultSlot.” If your montage uses “UpperBody” but your AnimGraph has a DefaultSlot, the montage plays on DefaultSlot (a new slot auto-created) while your UpperBody Slot node gets no input.

State machine not connected through Slot. Common layout error: state machine output goes directly to Output Pose, bypassing the Slot. Montage data plays on the slot, but the slot is not in the final blend chain.

Blend Out Time too long or infinite. If Blend Out Time in the montage is set very high, the blend back takes forever. Appears as if the character is stuck.

The Fix

Step 1: Add a Slot node in AnimGraph. Open your Animation Blueprint. In AnimGraph:

State Machine -> Slot (DefaultSlot) -> Output Pose

The Slot node is found by right-click > Slot > DefaultSlot. It takes the incoming pose as its “base” and any active montage plays on top. When no montage plays, it just passes the state machine through.

Step 2: Name slots consistently. In the montage asset, the Slot setting in the Anim Slot Manager must match what you reference in AnimGraph. Best practice:

Edit slots under the skeleton asset’s Anim Slot Manager. Add slot names, mark groups, and save.

Step 3: Play with Blend Out control.

void AMyCharacter::PlayAttack()
{
    if (AttackMontage)
    {
        float Duration = PlayAnimMontage(AttackMontage);
        UE_LOG(LogTemp, Log, TEXT("Montage played, duration %f"), Duration);
    }
}

void AMyCharacter::InterruptAttack()
{
    GetMesh()->GetAnimInstance()->Montage_Stop(0.25f, AttackMontage);
}

PlayAnimMontage returns the montage duration. Montage_Stop with a time parameter smoothly blends back; 0 is instant.

Step 4: Listen to OnMontageEnded.

void AMyCharacter::BeginPlay()
{
    Super::BeginPlay();
    UAnimInstance* Anim = GetMesh()->GetAnimInstance();
    Anim->OnMontageEnded.AddDynamic(this, &AMyCharacter::OnMontageEnded);
}

void AMyCharacter::OnMontageEnded(UAnimMontage* Montage, bool bInterrupted)
{
    if (Montage == AttackMontage)
    {
        UE_LOG(LogTemp, Log, TEXT("Attack ended (interrupted=%d)"), bInterrupted);
        bIsAttacking = false;
    }
}

Use for state flags (is attacking?), combo detection, and cleanup. bInterrupted tells you if the montage ended naturally or was canceled.

Layered Slots (Upper Body Attack)

To play attacks on upper body while legs keep walking, use Layered Blend Per Bone or a separate Slot node upstream:

LocomotionStateMachine ->
  Layered Blend Per Bone (spine root) ->
    [Base] locomotion
    [Blend] UpperBody Slot (with attack montage)
    -> Output Pose

Now attack montages only affect upper body, legs continue walking.

“Montages need Slots. Slots need AnimGraph wiring. Without both, the character freezes or the attack never plays.”

Related Issues

For general animation debugging, see Unity Animator Root Motion Not Applied (analogous concepts). For Blueprint Interface issues, Blueprint Interface Not Calling C++.

Slot node in AnimGraph + matching slot name + Blend Out Time tuned. Every montage needs this.