Unity Gravity script lowering FPS because of overlap sphere checking collision
You are allocating like crazy use Physics.OverlapSphereNonAlloc
dont do List&lt;Rigidbody&gt; rbs = new List&lt;Rigidbody&gt;();
Replace with o(1) lookup HasTagDownHierarchy(otherBody.transform, &quot;Boat&quot;) also avoid tags. Use markup classes.
edit: With look up I mean, in Boat Awake method cache the Colliders in a look up Dictionary&lt;Collider, Boat&gt;