コード例 #1
0
    void applyGravity(Gravable grav1, Gravable grav2)
    {
        if (grav1 == grav2)
        {
            Debug.Log("whaa");
        }
        Vector2 totalForce1 = new Vector2(0, 0);
        Vector2 totalForce2 = new Vector2(0, 0);

        Vector2 myPos     = grav1.gameObject.transform.position;
        Vector2 otherPos  = grav2.gameObject.transform.position;
        float   otherMass = grav1.GetComponent <Rigidbody2D> ().mass;
        float   myMass    = grav2.GetComponent <Rigidbody2D> ().mass;
        Vector2 towards   = (myPos - otherPos);
        float   r3        = towards.sqrMagnitude * towards.magnitude;
        float   gravMag   = (G * otherMass * myMass / r3);

        totalForce1 += gravMag * -towards;
        totalForce2 += gravMag * towards;
        if (grav1.isAffectedByOthers && grav2.affectsOthers)
        {
            grav1.GetComponent <Rigidbody2D> ().AddForce(totalForce1);
        }
        if (grav2.isAffectedByOthers && grav1.affectsOthers)
        {
            grav2.GetComponent <Rigidbody2D> ().AddForce(totalForce2);
        }
    }
コード例 #2
0
    public void addGrav(Gravable newGrav)
    {
        Pair <Gravable, Gravable>[] toAdd = new Pair <Gravable, Gravable> [allGravs.Count];
        for (int i = 0; i < allGravs.Count; i += 1)
        {
            if (allGravs [i] == newGrav)
            {
                Debug.Log("Tried to an an already existing grav");
            }
            toAdd [i] = new Pair <Gravable, Gravable> (allGravs [i], newGrav);
        }
        allGravs.Add(newGrav);
        gravCombos = Concat(gravCombos, toAdd);
//		printGravs ("Add");
    }
コード例 #3
0
    public void removeGrav(Gravable toRemove)
    {
//		printGravs ("remove1");
        allGravs.Remove(toRemove);
        List <Pair <Gravable, Gravable> > reorg = new List <Pair <Gravable, Gravable> > (gravCombos);

        foreach (var pair in reorg.ToList())
        {
            if ((pair.First == toRemove) || (pair.Second == toRemove))
            {
                reorg.Remove(pair);
            }
        }
        gravCombos = reorg.ToArray();
//		printGravs("remove2");
    }