Unity 6.3 — Cinemachine

Last verified: 2026-02-13 Status: Production-Ready Package: com.unity.cinemachine v3.0+ (Package Manager)


Overview

Cinemachine is Unity's virtual camera system that enables professional, dynamic camera behavior without manual scripting. It's the industry standard for Unity camera work.

Use Cinemachine for:

  • 3rd person follow cameras
  • Cutscenes and cinematics
  • Camera blending and transitions
  • Dynamic camera framing
  • Screen shake and camera effects

⚠️ Knowledge Gap: Cinemachine 3.0 (Unity 6) is a major rewrite from 2.x. Many API names and components changed.


Installation

Install via Package Manager

  1. Window > Package Manager
  2. Unity Registry > Search "Cinemachine"
  3. Install Cinemachine (version 3.0+)

Core Concepts

1. Virtual Cameras

  • Define camera behavior (position, rotation, lens)
  • Multiple virtual cameras can exist; only one is "live" at a time

2. Cinemachine Brain

  • Component on main Camera
  • Blends between virtual cameras
  • Applies virtual camera settings to Unity Camera

3. Priorities**

  • Virtual cameras have priority values
  • Highest priority camera is active
  • Blends smoothly when priority changes

Basic Setup

1. Add Cinemachine Brain to Main Camera

// Automatically added when creating first virtual camera
// Or manually: Add Component > Cinemachine Brain

2. Create Virtual Camera

GameObject > Cinemachine > Cinemachine Camera

This creates a CinemachineCamera GameObject with default settings.


Virtual Camera Components

CinemachineCamera (Unity 6 / Cinemachine 3.0+)

using Unity.Cinemachine;

public class CameraController : MonoBehaviour {
    public CinemachineCamera virtualCamera;

    void Start() {
        // Set priority (higher = active)
        virtualCamera.Priority = 10;

        // Set follow target
        virtualCamera.Follow = playerTransform;

        // Set look-at target
        virtualCamera.LookAt = playerTransform;
    }
}

Follow Modes (Body Component)

3rd Person Follow (Orbital Follow)

// In Inspector:
// CinemachineCamera > Body > 3rd Person Follow

// Configure:
// - Shoulder Offset: (0.5, 0, 0) for over-shoulder
// - Camera Distance: 5.0
// - Vertical Damping: 0.5 (smooth up/down)

Framing Transposer (Smooth Follow)

// CinemachineCamera > Body > Position Composer

// Configure:
// - Screen Position: Center (0.5, 0.5)
// - Dead Zone: Don't move camera if target within zone
// - Damping: Smooth following

Hard Lock (Exact Follow)

// CinemachineCamera > Body > Hard Lock to Target
// Camera exactly matches target position (no offset or damping)

Aim Modes (Aim Component)

Composer (Frame Target)

// CinemachineCamera > Aim > Composer

// Configure:
// - Tracked Object Offset: Aim at target's head instead of feet
// - Screen Position: Where target appears on screen
// - Dead Zone: Don't rotate if target within zone

Look At Target

// CinemachineCamera > Aim > Rotate With Follow Target
// Camera rotation matches target rotation (e.g., first-person)

Blending Between Cameras

Priority-Based Blending

public CinemachineCamera normalCamera; // Priority: 10
public CinemachineCamera aimCamera;    // Priority: 5

void StartAiming() {
    // Set aim camera to higher priority
    aimCamera.Priority = 15; // Now active
    // Brain automatically blends from normalCamera to aimCamera
}

void StopAiming() {
    aimCamera.Priority = 5; // Back to normal
}

Custom Blend Times

// Create Custom Blends Asset:
// Assets > Create > Cinemachine > Cinemachine Blender Settings

// In Cinemachine Brain:
// - Custom Blends = your asset
// - Configure blend times per camera pair

Camera Shake

Impulse Source (Trigger Shake)

using Unity.Cinemachine;

public class ExplosionShake : MonoBehaviour {
    public CinemachineImpulseSource impulseSource;

    void Explode() {
        // Trigger camera shake
        impulseSource.GenerateImpulse();
    }
}

Impulse Listener (Receive Shake)

// Add to CinemachineCamera:
// Add Component > CinemachineImpulseListener

// Impulse listener automatically receives shake from nearby Impulse Sources

Freelook Camera (Third Person with Mouse Look)

Cinemachine Free Look

// GameObject > Cinemachine > Cinemachine Free Look

// Creates 3 rigs (Top, Middle, Bottom) that blend based on vertical input
// Configure:
// - Orbit Radius: Distance from target
// - Height Offset: Camera height at each rig
// - X/Y Axis: Mouse or joystick input

State-Driven Camera (Anim ator-Based)

Cinemachine State-Driven Camera

// GameObject > Cinemachine > Cinemachine State-Driven Camera

// Configure:
// - Animated Target: Character with Animator
// - Layer: Animator layer to track
// - State: Assign camera per animation state (Idle, Run, Jump, etc.)

// Camera automatically switches based on animation state

Dolly Tracks (Cutscenes)

Cinemachine Dolly Track

// 1. Create Spline: GameObject > Cinemachine > Cinemachine Spline

// 2. Create Dolly Camera:
//    GameObject > Cinemachine > Cinemachine Camera
//    Body > Spline Dolly
//    Assign Spline

// 3. Animate dolly position on spline (Timeline or script)

Common Patterns

Third-Person Follow Camera

// CinemachineCamera
// - Follow: Player Transform
// - Body: 3rd Person Follow (shoulder offset, distance: 5)
// - Aim: Composer (frame player at center)

Aiming Camera (Zoom In)

// Normal Camera (Priority 10):
//   - Distance: 5.0

// Aim Camera (Priority 5):
//   - Distance: 2.0
//   - FOV: Narrower

// Script:
void StartAiming() {
    aimCamera.Priority = 15; // Blend to aim camera
}

Cutscene Camera Sequence

// Use Timeline:
// 1. Create Timeline (Assets > Create > Timeline)
// 2. Add Cinemachine Track
// 3. Add virtual cameras as clips
// 4. Timeline automatically blends between cameras

Migration from Cinemachine 2.x (Unity 2021)

API Changes (Unity 6 / Cinemachine 3.0)

// ❌ OLD (Cinemachine 2.x):
CinemachineVirtualCamera vcam;
vcam.m_Follow = target;

// ✅ NEW (Cinemachine 3.0+):
CinemachineCamera vcam;
vcam.Follow = target; // Cleaner API

Major Changes:

  • CinemachineVirtualCameraCinemachineCamera
  • m_Follow, m_LookAtFollow, LookAt (no "m_" prefix)
  • Components renamed for clarity
  • Better performance

Performance Tips

  • Limit active virtual cameras (only activate when needed)
  • Use lower-priority cameras instead of destroying/creating
  • Disable virtual cameras when far from player

Debugging

Cinemachine Debug

// Window > Analysis > Cinemachine Debugger
// Shows active camera, blend info, shot quality

Sources

Built with LogoFlowershow