the symptom, in your words

"Collider choice that actually costs you"

✓ verified on 26.07.08e
lane Making it performposted

▸ SYMPTOM

  • Decorative props with ModelCollider tank traces / physics.
  • Scaled trees/props: visual huge, capsule/hull stays tiny (scaled-collider-didnt-scale).
  • Unsure which collider to default to for stylized scenes.

▸ CAUSE

Different collider types have different cost and different scale behavior:

TypePerf instinctFollows WorldScale?
BoxColliderCheap; prefer for propsYes
CapsuleColliderFine for characters/trunksNo (Radius/Start/End)
ModelColliderPer-poly: expensive, noisy tracesNo (hull stays model-native)

ModelCollider also needs real physics parts on the vmdl or it creates no shapes (model-no-collision).

▸ FIX

Default for props / scenery: bounds-sized BoxCollider at generation time (catalog Size/Center).

Characters / simple vertical volumes: capsules on an unscaled sibling if the visual GO is scaled, or bake scale into the vmdl and keep WorldScale = 1.

Climbable / shelved statics that need mesh fidelity: PhysicsMeshFile in the vmdl + ModelCollider, accepting the cost. Don't spray this on every bush.

snippet
// Prop default
var box = go.Components.Create<BoxCollider>();
box.Scale = boundsSize;   // model-local; WorldScale multiplies
box.Center = boundsCenter;
box.Static = true;

Dynamic props: non-static box + Rigidbody when you need pushes.

Frame-level triangle budget is separate but related: frame-budget-stylized-scenes.

▸ WHY IT WORKS

Boxes are constant-cost shapes and participate in GO scale. Capsules/hulls are authored in model space without the same WorldScale multiply, and mesh colliders scale CPU with triangle complexity, so the "default ModelCollider on everything" habit pays twice (perf + silent scale bugs).

Verified on engine 26.07.08e: seen in a real project.
s&box moves fast; an undated fix is a liability. Spot a stale detail?

Want to know when new guides or fixes drop? Join the community to help build this out. Report gotchas, flag outdated fixes, or just lurk.

Join the Discord