Root cause: CreateSphere(r) baked scale into mesh radius, then Transform applied scale again → double scaling. Visual radius was scale*0.5*scale but collider was scale*0.5. Fix: always create sphere at radius 0.5 (unit sphere, like cube.obj). Scale is applied through Transform only. Collider radius = maxScale*0.5 matches visual radius = 0.5 * scale.