ChaseCamera
The camera behavior on the PlayerPrototype's `CameraRig`, and the only thing in BLOCKBUSTER 767 that moves the camera. The Camera component instantiates it beside itself and hands it the avatar in `Camera.follow`.
ChaseCamera
The camera behavior on the PlayerPrototype's CameraRig, and the only thing in
BLOCKBUSTER 767 that moves the camera. The Camera component instantiates it
beside itself and hands it the avatar in Camera.follow.
It trails the toy from behind and above, so the plane flies AWAY from the viewer into the skyline and the tall axis of a 3:4 frame carries the composition: the aim point sits ahead of and below the nose, which puts the plane in the lower third with the towers rising above it.
Each frame, in order:
- solve the chase pose — the station the camera would take if nothing were
staging a moment — and publish it as
cam.chase; - blend that toward
cam.override, the pose theDirectorasked for; - add the decaying impulses (shake, lens punch, distance kick) and a slow handheld sway, so the frame is never mechanically still;
- write the rig's transform and the Camera's fov.
The feel
Speed pushes the camera back and opens the lens; boost adds to both; a plane that has stopped is closed in on, because the wreck is the subject now. The offset is smoothed AS AN OFFSET FROM THE PLANE, never as a world position, so the lag never grows with speed.
The chase smooths on SIMULATED seconds, so a slow-motion beat slows the camera's own catch-up with the world it is filming. When the simulation clock is stopped altogether it smooths on real ones instead, so a staged move over a frozen scene still plays.
Spans, not metres
Every distance is a multiple of the toy's own longest dimension, measured once
off whatever the plane-art slice built (framing 2.3 spans behind, height
0.85 above, lookAhead 1.8 ahead, lookDown 0.28 below). A camera holding
absolute metres would frame a bigger or smaller 767 wrongly the moment that
slice changed it. ChaseCamera:rig() reads back the measured span and the
station it produces.
Every screen shape
Nothing here is a number chosen for a 1080x1440 frame. The lens opens on a
screen taller than the filmed 3:4 and the camera stands further off
(cam.fovForAspect, cam.distanceScale), and how far the plane rides below the
aim point scales with how tall the screen is — all read from the live viewport
every frame.
Measured at the parked launcher: 16:9 → 58° and the authored distance, with the aim 0.48 m higher so the plane centres a little; 3:4 → 58° and the authored distance; 9:16 → 66.5° and 1.5 m further back. The plane and the skyline are both in frame at every one.
Where the staging lives
Nothing in this file knows what a topple or a wreck is. It wakes, puts the
Director on the scene's mount_director (retrying until the component type
has registered), and from then on only reads game.camera.cam.
Scoped to this part · feeds back into the world's score.