Quick answer: Cinemachine snaps instead of blending when the brain’s default blend is Cut, when source and destination priorities tie, or when Mode is set to Custom Blends with no asset assigned. Set Default Blend to Ease In Out with a duration, give every vcam a unique priority, use the SmoothCamera blend hint, and match lens settings between the two cameras to avoid mid-blend warping.
Here is how to fix Unity Cinemachine when blends jump on camera switch. You set up two virtual cameras, you flip the active one’s priority in code, and instead of the smooth dolly you expected, the view teleports. Sometimes it almost-blends — you see a frame or two of motion and then a hard cut. Sometimes the blend completes but the camera lurches halfway through, as if something else briefly grabbed control. Cinemachine can produce gorgeous transitions, but only when the brain has enough information to interpolate cleanly.
The Symptom
The bug looks slightly different depending on which configuration error caused it, and the differences are diagnostic:
Hard cut, zero blend frames. The view jumps in a single frame. This is the brain saying “blend duration is zero” or “I have no defined blend for this transition.” The active vcam swap happened, but the interpolator was never engaged.
Camera oscillates between two cameras. The view flips back and forth, sometimes settling on one, sometimes the other. This is the priority-tie case: two vcams have the same priority value, and the brain re-evaluates the winner every frame, picking inconsistently.
Blend starts smooth, then warps. The first half looks fine; the second half has a noticeable lens distortion or geometry stretch. The brain is interpolating position correctly but lens parameters between the two cameras differ, so the field of view morphs visibly during the blend.
Camera arcs through walls. The blend completes smoothly in screen space but the camera physically passes through level geometry. Linear interpolation between two camera positions takes the shortest straight line, which is rarely what you want for orbital framing.
What Causes This
CinemachineBrain default blend is Cut. The brain holds a fallback blend that applies whenever no Custom Blend matches the From-To pair. If the default is Cut with duration 0, every untyped transition will snap. This is the most common cause and the first thing to check.
Priority ties. Cinemachine picks the active vcam by priority, then by activation order. If two vcams have priority 10, the brain technically has a winner (the most recently activated) but the result feels inconsistent because that order can change between frames depending on activation timing. Using distinct priorities removes the ambiguity.
Custom Blends asset is set but empty. The brain’s Mode dropdown lets you choose Custom Blends and assign a CinemachineBlenderSettings asset. If the asset has entries for some camera pairs but not the one you are transitioning between, the brain falls back to Cut — not to the default blend. This catches a lot of people because the default blend looks like it should kick in, but Custom Blends mode disables the fallback.
Lens settings diverge. If camera A has FOV 60 and camera B has FOV 25, the blend interpolates FOV linearly across the duration. The geometry distortion during that sweep is visible and rarely flattering — lens compression changes mid-blend, which reads as warping rather than motion.
The Fix
Step 1: Set a sensible default blend. Select the camera GameObject that hosts CinemachineBrain. In the inspector, find Default Blend and change it from Cut to Ease In Out with a duration of 1.5 seconds (or whatever feels right for your game). Switch Mode back to Default Blend unless you have a fully populated Custom Blends asset.
Step 2: Give every vcam a distinct priority. Adopt a convention like idle = 10, combat = 20, cinematic = 30 and stick to it. When you want a camera to take over, raise its priority above the current active one:
using UnityEngine;
using Unity.Cinemachine;
public class CameraSwitcher : MonoBehaviour
{
private const int InactivePriority = 0;
private const int ActivePriority = 20;
[SerializeField] private CinemachineCamera idleCam;
[SerializeField] private CinemachineCamera combatCam;
public void EnterCombat()
{
// Make combat strictly higher than idle so the brain has
// an unambiguous winner. Avoid equal priorities.
idleCam.Priority = InactivePriority;
combatCam.Priority = ActivePriority;
}
public void ExitCombat()
{
idleCam.Priority = ActivePriority;
combatCam.Priority = InactivePriority;
}
}
Step 3: Use the SmoothCamera blend hint. On each virtual camera, find the Blend Hint setting in the inspector. Set it to SmoothCamera (also called Spherical Position in older versions). This tells the brain to interpolate position along an arc relative to the LookAt target rather than along a straight line, which produces a far more natural sweep and avoids cutting through geometry.
Step 4: Match or curve the lens. If both cameras can use the same FOV, near, and far values, do that. If the transition requires different lenses (e.g., gameplay is FOV 60 and a cinematic insert is FOV 35), create a Custom Blends asset that defines an explicit From-To entry with a custom curve, so you control how the lens changes over the blend rather than letting the brain interpolate linearly.
Defining Custom Blends
Right-click in your project, choose Create > Cinemachine > Blender Settings, and assign the resulting asset to CinemachineBrain > Custom Blends. Each row in the asset is a From vcam, a To vcam, a blend curve, and a duration. You can use **ANY CAMERA** as a wildcard for either side.
// Programmatic access to inspect the active blend
using UnityEngine;
using Unity.Cinemachine;
public class BlendDebugger : MonoBehaviour
{
[SerializeField] private CinemachineBrain brain;
private void Update()
{
CinemachineBlend blend = brain.ActiveBlend;
if (blend != null && !blend.IsComplete)
{
Debug.Log($"Blending {blend.CamA?.Name} -> " +
$"{blend.CamB?.Name} at {blend.BlendWeight:F2}");
}
}
}
This is invaluable when debugging snaps. If ActiveBlend is null immediately after a priority change, no blend is happening — you have the Cut problem. If it appears for one frame and then disappears, your duration is effectively zero. If BlendWeight jumps from 0 to 1 between two consecutive frames, the duration is being clamped somewhere downstream.
One-Shot Override Blends
Sometimes you want this specific camera switch to use a slow dramatic blend, even though most transitions are fast. Set the duration on the brain at activation time:
You can use brain.DefaultBlend = new CinemachineBlendDefinition(...) just before changing priority, then restore it on the next frame. Or, cleaner, define the slow blend explicitly in a Custom Blends asset and let the brain pick it automatically based on the From-To pair. The asset approach scales better as the cinematic vocabulary grows.
“Cinemachine never snaps for no reason. Either the blend duration is zero, the priority is ambiguous, or the lens is asking the brain to interpolate something it cannot interpolate cleanly.”
Related Issues
If your camera blends correctly but jitters during the steady-state, see Cinemachine Camera Jitter. For follow cameras that feel sluggish or rubbery, check Cinemachine Damping Feels Wrong.
Default Blend = Ease In Out 1.5s, distinct priorities, SmoothCamera hint — that combination fixes 90% of Cinemachine snap reports.