private void ApplyMagneticForce(MovingChargedAtom mca)
    {
        Vector3 newForce = Vector3.zero;

        foreach (ChargedAtom ca in chargedAtoms)
        {
            if (mca == ca)
            {
                continue;
            }

            float distance = Vector3.Distance(mca.transform.position, ca.gameObject.transform.position);
            float force    = 1000 * mca.charge * ca.charge / Mathf.Pow(distance, 2);

            Vector3 direction = mca.transform.position - ca.transform.position;
            direction.Normalize();

            newForce += force * direction * cycleInterval;

            if (float.IsNaN(newForce.x))
            {
                newForce = Vector3.zero;
            }

            mca.rb.AddForce(newForce);
        }
    }
    public IEnumerator Cycle(MovingChargedAtom mca)
    {
        bool isFirst = true;

        while (true)
        {
            if (isFirst)
            {
                isFirst = false;
                yield return(new WaitForSeconds(Random.Range(0, 0.01f)));
            }
            ApplyMagneticForce(mca);
            yield return(new WaitForSeconds(cycleInterval));
        }
    }