Quick answer: World Space Canvas does not auto-billboard. Add a script that rotates the canvas toward the camera each frame. Assign Event Camera for raycasting. Scale the canvas transform (0.01 typical) to size the UI in world units.

Here is how to fix Unity World Space Canvas not following camera. You add a health bar above an enemy — World Space Canvas, UI Image for the fill. In play mode, the health bar is visible from the front but invisibly thin from the side, and invisible from behind. Or it appears tiny or giant, or clicks do not register. World Space UI requires explicit camera wiring that Overlay canvases handle automatically.

The Symptom

A Canvas in World Space render mode behaves incorrectly:

What Causes This

World Space does not billboard. Unlike Screen Space Overlay or Screen Space Camera, World Space Canvases are positioned like any other GameObject. They have a fixed rotation in world space. If you want the canvas to face the camera, you must rotate it yourself.

Event Camera not set. For UI interaction (clicks on buttons, drag), the canvas’s Event Camera field must reference a camera. Without it, the Graphic Raycaster cannot compute pointer positions and raycasts miss.

Scale issues. Canvas components typically default to a width of 1000 and height of 1000 units. In World Space, this means the canvas is a 1000x1000 meter plane. Shrinking via transform.scale = 0.01 gets it to human-readable size. Easy to forget.

Canvas Scaler confusion. The Canvas Scaler component has Reference Resolution and Scale Factor options that only work in Screen Space modes. In World Space, only the transform scale matters. Adjusting reference resolution does nothing.

The Fix

Step 1: Add a billboard script. Attach to the world-space canvas so it faces the camera each frame.

using UnityEngine;

public class FaceCamera : MonoBehaviour
{
    private Camera cam;

    void Awake() { cam = Camera.main; }

    void LateUpdate()
    {
        if (cam == null) return;
        // Face away from camera so text reads correctly
        transform.rotation = cam.transform.rotation;
    }
}

Use LateUpdate so camera movement has finished before orientation is set. Using cam.transform.rotation (not LookAt) preserves consistent orientation across frames — text does not tilt up/down as the camera rotates.

Step 2: Assign Event Camera. Select the Canvas. In the Canvas component, assign the main camera to Event Camera. This enables Graphic Raycaster to work correctly in World Space.

If you have multiple cameras (minimap, main, etc.), pick the one that should handle UI input — usually the main gameplay camera.

Step 3: Scale sensibly. A canvas designed at 400x100 pixels (like a health bar) with transform.scale = 1 is a 400x100 meter sign. Scale down:

transform.localScale = new Vector3(0.01f, 0.01f, 0.01f);

Now the canvas is 4x1 meters — correct for a floating sign above a character.

Step 4: Set Canvas Sort Order / Render Queue. World Space canvases participate in depth-sorting with other geometry. If a canvas is inside a transparent object, it may render behind. Adjust Sort Order or move the canvas slightly in front.

Occluding Geometry

World Space Canvases can be occluded by geometry in front of them. A health bar behind a wall is invisible. If you want the bar to be always-visible, use a custom shader for the UI with ZTest Always, or switch to Screen Space Camera mode with a secondary camera that only renders UI.

Multi-Canvas Scenes

If your scene has many world-space UIs (floating damage numbers, nameplates, waypoints), creating a Canvas per UI is expensive. Use a pool of pre-instanced Canvases that reposition to where they are needed. Or use a shader-based approach (UI Toolkit or custom mesh) for hundreds of elements.

“World Space Canvas is a 3D object that happens to contain UI. Treat it like a billboard mesh: rotate it, scale it, depth-sort it.”

Related Issues

For Canvas Scaler issues, see Canvas Scaler UI Blurry. For raycaster blocking issues, UI Raycaster Blocking Clicks Elsewhere covers related UI event issues.

Billboard script, Event Camera assigned, scale 0.01. World Space UI works.