Quick answer: Check Used By Effector on the trigger collider (default is off!). The effector and collider must be on the same GameObject. The affected Rigidbody2D must be Dynamic.
You add a BuoyancyEffector2D to a water area to make rigidbodies float. The collider is a Box2D, set to Is Trigger. Run play; objects fall straight through. The effector is configured; the water is set up; nothing happens.
Effector Setup Checklist
For a Physics2D effector to work, four things must be true:
- The effector component (BuoyancyEffector2D, PointEffector2D, etc.) is on the GameObject.
- A Collider2D on the same GameObject has
Is Trigger = true. - That collider has
Used By Effector = true. - The body being affected has
Rigidbody2D.bodyType = Dynamic.
Miss any one and the effector silently no-ops. The most commonly missed: step 3.
The Fix
Select the water GameObject. In the Inspector:
BoxCollider2D
Is Trigger: true
Used By Effector: true // THIS
BuoyancyEffector2D
Density: 2
Surface Level: 0
Linear Drag: 1
Angular Drag: 1
Save. The collider area now acts as the effector’s zone of influence.
Dynamic Body Type
For buoyancy, the affected body must respond to gravity (which the effector counters). Check:
Rigidbody2D
Body Type: Dynamic
Gravity Scale: 1.0
Kinematic and Static bodies don’t respond to forces, so effectors do nothing to them. Switch to Dynamic if you intended physics interaction.
Effector Layers
Each effector has a Collider Mask field. By default it’s Everything. If your project sets it to a specific layer, only colliders on that layer get affected. Check the affected body’s layer is in the mask.
Diagnosing
Enable physics gizmos. The effector’s area should be highlighted with its visualization (e.g., wavy lines for buoyancy, arrow for point). Drop a rigidbody into the area — it should react. If gizmos don’t show, the collider isn’t marked as “used by effector”.
Verifying
Drop a Dynamic Rigidbody2D into the water. It should bob to the surface and float. If it falls through, recheck the four-step list. If it bobs but oscillates wildly, increase Linear Drag for damping.
“Used By Effector is the property everyone forgets. Check it first when any effector misbehaves.”
Build a tiny EffectorAuditor editor script that lists every effector + collider pair and flags missing Used By Effector flags.