public void consume(GravityObject smallerObject) { if (mass > smallerObject.mass) { float half = smallerObject.mass / 2; smallerObject.mass -= half; mass += half; Refresh(); if (smallerObject.mass < 0.1f) { smallerObject.gameObject.SetActive(false); total--; Debug.Log(total + " GravityObjects left!"); } else { smallerObject.Refresh(); smallerObject.rigidbody.velocity /= half; // slow down to prevent slingshotting } if (half > 1) { rigidbody.velocity /= half; // slow down based on mass consumed, because now heavier } } }