public static float G = (float)6.67; //6.67e-11;
    //you may add your own rules instead of "Universal Gravitation"
    public Vector3 CalculateForce(VelocityVerletObject obj)
    {
        Vector3 f = Vector3.zero;

        foreach (VelocityVerletObject item in objects)
        {
            if (item != obj)
            {
                Vector3 dir = item.transform.position - obj.transform.position;
                float   r2  = Mathf.Max(0.1f, Vector3.SqrMagnitude(dir));

                //ensure ug will not inf
                if (r2 > 1)
                {
                    float ug = (float)(G * item.mass * obj.mass / r2);
                    //force dir: obj->item
                    f += dir.normalized * ug;
                }
            }
        }
        return(f);
    }
 public void RemoveObject(VelocityVerletObject obj)
 {
     objects.Remove(obj);
 }
 public void AddObject(VelocityVerletObject obj)
 {
     objects.Add(obj);
 }