Checkpoint Flag
A platformer checkpoint: a pole on a stone, metal or wooden base with a waving flag in any colour and a glowing finial. Active raises the flag to the top; inactive leaves a grey flag low on the pole. The cloth is two hinged parts, flag_0 at the pole and flag_1 at its middle, swaying about y (userData.tick, Loop clip baked). The base fits one 1 m grid cell; the whole piece is centred on its bounds, so the pole stands about 0.3 m left of the origin.
- Size
- 1.6 × 2.4 × 0.92 m
- Triangles
- 552
- Kit
- Platformer
Tune it
4 knobs: Flag colour, State, Base, Pole height.
Specs
- Size
- 1.6 × 2.4 × 0.92 m width × height × depth
- Triangles
- 552 of 6,000
- Draw calls
- 1 one vertex-colour material
- Loop clip
- 8 m of travel per cycle
- Moving parts
- 2 flag_0 · rotate, flag_1 · rotate
- Knobs
- 4 3 presets
- Night lights
- 1 glow
Passed the validator: real scale, rests on y = 0, front faces +Z, deterministic.
Use it
Code for the specimen as it is set up above; it follows your knobs.
import { createAsset } from 'https://gaitkit.com/cdn/checkpoint-flag.mjs';
const checkpointFlag = createAsset();
scene.add(checkpointFlag); // rests on y = 0, front faces +Z
// 'flag_0' pivots on its hinge: -25° to 25° around y
checkpointFlag.getObjectByName('flag_0').rotation.y = THREE.MathUtils.degToRad(-25);import { useMemo } from 'react';
import { createAsset } from 'https://gaitkit.com/cdn/checkpoint-flag.mjs';
export function CheckpointFlag() {
const model = useMemo(() => createAsset(), []);
return <primitive object={model} />;
}# Import checkpoint-flag.glb (download below). Moving parts are separate nodes, pivoted on their hinge.
$CheckpointFlag/flag_0.rotation_degrees.y = -25// Import checkpoint-flag.glb with glTFast (com.unity.cloud.gltfast).
transform.Find("flag_0").localEulerAngles = new Vector3(/* y: */ -25, 0, 0);Use the gaitkit MCP server: get_variant({ "id": "checkpoint-flag", "want": "default look" })
then place the result.
# MCP endpoint
https://gaitkit.com/mcpKnobs
| Knob | Type | Values | Default | What it does |
|---|---|---|---|---|
color | color | any colour | #ff5a3c | Flag cloth colour when active. #ff5a3c red, #3fa9ff blue, #52d273 green, #ffcc33 yellow, #b06cff purple. |
state | choice | active inactive | active | active (flag raised to the top in its colour, finial and base lights glowing: the player has reached it) or inactive (grey flag lowered near the base, lights off: not reached yet). Swap the two to show a checkpoint being claimed. |
base | choice | stone metal wood | stone | stone (round stone slab with grass tufts), metal (bolted steel plate with lamps), wood (a sawn log stump). |
height | range | 1.5 to 3.5, step 0.1 | 2.4 | Height of the pole in metres, base included. |
Presets: claimed checkpoint {"state":"active","color":"#52d273"} · waiting checkpoint {"state":"inactive"} · castle banner {"base":"stone","color":"#b06cff","height":3.4}
Files
| File | What |
|---|---|
| checkpoint-flag.glb | GLB, default look · 69 KB |
| checkpoint-flag.mjs | ES module, every knob live |
| checkpoint-flag.obj | OBJ, static, no colour |
| checkpoint-flag-params.json | knob schema, presets, night zones |
Licence
Use it in games, apps, renders and client work, commercially and without credit. Do not resell it as an asset or train a 3D generator on it. The full licence.