Help guide

Physics Static Body (per element) node

Updated June 21, 2026

Physics Static Body (per element) node

Product media placeholder

Replace this area with a screenshot or short walkthrough video during the media sweep.

Multi-element static collider. Selector matches N DOM elements via `querySelectorAll`; spawns one static body per match, each tracking its element's live BCR. Per-frame translation-only resampling (translation-invariant — the engine preserves contact pairs across pose changes). Use when N elements share the same physics tuning but each needs its own body — per-letter colliders driven by `splitText`, per-card colliders in a forEach layout, etc.

Type physicsStaticBodyEachCategory solversContext sharedDynamic ports noCompound no

Inputs

PortTypeDescription
worldanyWire to the sibling `physicsWorld.world` output. Loader resolves the connection at bind and registers all N bodies in this world.

Outputs

PortTypeDescription
bodyIdsfloatArrayEngine handles in document-order (matches the `querySelectorAll` order). Wire downstream into per-body consumers.
countfloatNumber of matched elements / spawned bodies.

Parameters

ParameterTypeDefaultDescription
selectorelementSelector""Multi-match CSS selector. Every element matched by `querySelectorAll` at bind time becomes its own body.
modeenum"kinematic"Kinematic: rigid obstacle whose pose tracks the element BCR each frame; ball impacts cannot move it but it correctly pushes balls when CSS displaces it. Dynamic: spring-tethered to the element BCR; ball impacts knock it; spring pulls it back. Patrick Heng-style letter wobble uses Dynamic. options kinematic, dynamic
restitutionfloat0.5Bounce coefficient. 0 = no bounce, 1 = perfectly elastic. min 0; max 1; step 0.05
frictionfloat0.5Friction min 0; max 2; step 0.05
isSensorboolfalseWhen true, generates collision events but does not push other bodies.
stiffnessfloat80Dynamic mode only. Spring force per pixel of displacement from home. Higher = faster snap-back. min 0; step 5
dampingfloat8Dynamic mode only. Velocity-opposing damping. Higher = fewer wobble cycles before settling. min 0; step 0.5
densityfloat0.5Dynamic mode only. Mass per unit area. Lower = lighter / easier to knock. min 0.01; step 0.1

Use cases

  • Per-letter physics — `splitText` produces N `.ft-split-char` elements; `physicsStaticBodyEach { selector: ".ft-split-char" }` gives one body per letter. When `cursorProximityWrite` shifts a letter via CSS transform, that letter's body tracks the new BCR — visual gaps become physical gaps and balls fall through them.
  • Per-card colliders for a list layout where each card should bounce independently when knocked.
  • Per-instance colliders downstream of `forEach`-expanded slides without authoring N nodes by hand.

Related nodes

Envelope

Use physicsStaticBodyEach as the node type inside a graph node envelope. Add id, optional params, optional connections, and optional activeWhen based on the guide context.

Generated source

Registry faster-motion-docs/node-registry.jsonCategory page /help/faster-motion/faster-motion-node-category-solvers/

Was this guide helpful?

Sunny Arora

Written by

Sunny Arora

Get technical deep dives delivered to your inbox

Join creators and developers who get exclusive insights, tutorials, and behind-the-scenes content every week.

No spam. Unsubscribe anytime.

Continue Exploring

You might also enjoy