This is not a question, but a solution.
After about an hour of searching for this answer, I spent an hour working out the solution.
It is super simple.
Code:
[HideInInspector] new public Rigidbody rigidbody;
public bool useGravity = true;
void Awake() {
rigidbody = GetComponent<Rigidbody>();
}
void FixedUpdate() {
rigidbody.useGravity = false;
if (useGravity) rigidbody.AddForce(Physics.gravity * (rigidbody.mass * rigidbody.mass));
}
If only the Rigidbody.useGravity is true, then it will fall as per the global Physics.gravity value.
AddForce(Physics.gravity) will achieve the exact same result if Rigidbody.useGravity is false.
If Rigidbody.useGravity is true, then both forces will be applied, so the Rigidbody.useGravity bool must be false to replicate and customize the object’s gravity.
FixedUpdate() sets Rigidbody’s useGravity to false to ensure it stays off.
Modify as desired. Using the Rigidbody.mass value is great.
However, if set to (Physics.gravity x rb.mass), nothing will change. It strangely seems like the gravity is first divided by the mass before completing the gravity x mass operation.
That is simply fixed by squaring the mass. (mass x mass)
If the mass is 2, the object will fall by gravity x 2 as expected.