"Collider choice that actually costs you"
- Decorative props with
ModelCollidertank traces / physics. - Scaled trees/props: visual huge, capsule/hull stays tiny (scaled-collider-didnt-scale).
- Unsure which collider to default to for stylized scenes.
Different collider types have different cost and different scale behavior:
| Type | Perf instinct | Follows WorldScale? |
|---|---|---|
BoxCollider | Cheap; prefer for props | Yes |
CapsuleCollider | Fine for characters/trunks | No (Radius/Start/End) |
ModelCollider | Per-poly — expensive, noisy traces | No (hull stays model-native) |
ModelCollider also needs real physics parts on the vmdl or it creates no shapes (model-no-collision).
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.
// 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.
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).