Daily free asset available! Did you claim yours today?

Dynamic Storytelling with Unity Timeline: Triggered Cutscenes

Posted by Gemma Ellison
./
July 15, 2025

Forget static narratives! Let’s inject dynamic storytelling into your games. We’re diving deep into Unity’s Timeline to build a cutscene system triggered by in-game events, specifically, entering a trigger zone. You’ll not just learn the “how,” but also the “why” behind each step, avoiding common pitfalls and maximizing creative control.

Setting Up the Timeline

First, create a new Timeline asset. In your Project window, right-click, select “Create,” and then “Timeline.” Name it something descriptive like “Cutscene_Entrance.”

Now, open the Timeline window (Window > Sequencing > Timeline). Drag your newly created Timeline asset into the Timeline window. You’ll see a message prompting you to create a Director. Click “Create.” This adds a PlayableDirector component to your selected GameObject.

Pitfall Alert: Don’t just dump everything into one Timeline. Think modular! Smaller, reusable cutscenes are far easier to manage and debug.

Controlling Game Objects

The power of Timeline lies in its ability to manipulate GameObjects. Let’s add a simple animation track. Select the GameObject you want to control (e.g., a door opening). In the Timeline window, click the “+” button and select “Animation Track.”

Drag your GameObject onto the newly created animation track. This binds the track to that specific GameObject.

Now, you can add keyframes and modify the GameObject’s properties (position, rotation, scale, etc.) over time. Use the Record button (the red circle) to automatically create keyframes as you adjust the GameObject in the Scene view.

Concrete Example: Imagine a door opening when the player enters a room. Create two keyframes: one at the beginning where the door is closed, and another a few seconds later where the door is open. Boom! Simple animation.

Opinionated Take: Don’t be afraid to experiment with multiple tracks for a single GameObject. Separate tracks for position, rotation, and scale offer finer control and easier editing.

Triggering the Cutscene

This is where the magic happens. We’ll create a simple C# script to detect when the player enters a trigger zone and activate the Timeline.

Create a new C# script named “CutsceneTrigger.” Attach it to a GameObject with a Collider component (set to “Is Trigger”).

using UnityEngine;
using UnityEngine.Playables;

public class CutsceneTrigger : MonoBehaviour
{
    public PlayableDirector cutscene; // Drag your PlayableDirector here.
    private bool cutscenePlayed = false; // Ensure it only plays once.

    private void OnTriggerEnter(Collider other)
    {
        if (other.CompareTag("Player") && !cutscenePlayed)
        {
            cutscene.Play();
            cutscenePlayed = true;
        }
    }

    //Optional - Stop the Cutscene if Player Leaves
    private void OnTriggerExit(Collider other)
    {
      if (other.CompareTag("Player") && cutscenePlayed)
        {
            cutscene.Stop(); // Or Pause, depending on desired behavior.
            cutscenePlayed = false;
        }
    }
}

Step-by-Step Breakdown:

  1. public PlayableDirector cutscene;: This creates a public variable in the Inspector where you can drag and drop your PlayableDirector component. This is crucial – the script needs to know which cutscene to control.
  2. private bool cutscenePlayed = false;: This boolean variable prevents the cutscene from playing repeatedly if the player stays within the trigger zone.
  3. OnTriggerEnter(Collider other): This function is automatically called when another collider enters the trigger zone.
  4. other.CompareTag("Player"): This checks if the entering collider has the “Player” tag. Ensure your player GameObject is tagged correctly!
  5. cutscene.Play();: This starts the Timeline playback.
  6. cutscene.Stop();: (Optional) Stop the cutscene when the player exits the trigger.

Common Mistake: Forgetting to assign the PlayableDirector in the Inspector. This will cause a NullReferenceException and your cutscene won’t play. Double-check your assignments!

Value Added: The cutscenePlayed boolean is critical for preventing unintended behavior. Without it, entering and exiting the trigger zone rapidly would cause the cutscene to restart continuously, leading to a jarring and unprofessional experience.

Refining the Experience

Consider adding these enhancements:

  • Fading: Use an Animation Track to fade the screen to black before and after the cutscene for a more cinematic feel.
  • Audio: Incorporate audio tracks to add music and sound effects to your cutscene.
  • Camera Control: Use Cinemachine tracks within the Timeline to create dynamic camera movements during the cutscene.

Actionable Insight: Instead of hardcoding the “Player” tag, create a separate scriptable object to hold game-wide constants like tag names and layer masks. This promotes maintainability and reduces the risk of typos.

Building cutscene systems in Unity doesn’t have to be a daunting task. By mastering the fundamentals of Timeline and scripting, you can create engaging cinematic moments that elevate your game’s storytelling. Experiment, iterate, and don’t be afraid to break things – that’s how you truly learn!