void FixedUpdate() { Vector3 jointPos = transform.TransformPoint(joint.anchor); Vector2 jointXZ = new Vector2(jointPos.x, jointPos.z); Vector3 massPos = GetComponent <Rigidbody>().worldCenterOfMass; Vector2 massXZ = new Vector2(massPos.x, massPos.z); float displacement = Vector2.Distance(jointXZ, massXZ); joint.AddTorque(-Physics.gravity.y * displacement * GetComponent <Rigidbody>().mass * 1.001f); }