Пример #1
0
    public Vector3 attract(Exercise_2_8_Mover m)
    {
        Vector3 force    = location - m.location;
        float   distance = force.magnitude;

        // TODO Constrain to some sueful Values; Look up how to
        //distance.constrain;
        distance = Mathf.Clamp(distance, 0.1f, 6f);

        force = force.normalized;
        float Strength = (G * mass * m.mass) / (distance * distance);

        force *= Strength;
        return(force);
    }
Пример #2
0
    // Use this for initialization
    void Start()
    {
        Attractor = new Exercise_2_8_Attractor(CSizeX / 2, CSizeY / 2, 1, 0.2f);

        for (int i = 0; i < movers.Length; i++)
        {
            // TODO Fix NEW Warning when instatiating, make mono happy.
            movers[i]  = new Exercise_2_8_Mover(UnityEngine.Random.value * 4, (UnityEngine.Random.value - 0.5f) * 20);
            spheres[i] = GameObject.CreatePrimitive(PrimitiveType.Sphere);
            spheres[i].transform.position =
                new Vector3(UnityEngine.Random.value, UnityEngine.Random.value, UnityEngine.Random.value);
            spheres[i].transform.localScale =
                new Vector3(0.02f, 0.02f, 0.02f);
            spheres[i].GetComponent <Renderer>().material = refMaterial;
        }
    }
Пример #3
0
 // Update is called once per frame
 void Update()
 {
     for (int i = 0; i < movers.Length; i++)
     {
         Vector3 force = Attractor.attract(movers[i]);
         movers[i].applyForce(force);
         //movers[i].applyForce(wind);
         //movers[i].applyForce(gravity);
         movers[i].UpdatePosition();
         //movers[i].CheckEdges();
         spheres[i].transform.position = new Vector3(movers[i].location.x, movers[i].location.y, 0f);
     }
     timeLeft -= Time.deltaTime;
     if (timeLeft <= 0)
     {
         capture();
         Invoke("ClearScreen", 1f);
         for (int i = 0; i < movers.Length; i++)
         {
             movers[i] = new Exercise_2_8_Mover(UnityEngine.Random.value * 4, (UnityEngine.Random.value - 0.5f) * 20);
         }
         timeLeft += 2000;
     }
 }