// Update is called once per frame
 void Update()
 {
     dist         = objective.transform.position - transform.position;
     hiddenWeight = dist.magnitude - radius;
     vn.AddHeading(0.5f * weight * hiddenWeight * dist.normalized);
     vn.AddHeading(0.5f * weight * Vector3.Cross(dist.normalized, orbitalPlane));
 }
    // Update is called once per frame
    void Update()
    {
        if (senseObjectives)
        {
            if (Random.value < senseFrequency * Time.deltaTime)
            {
                QueryEnvironment();
            }
        }

        for (int i = 0; i < objectives.Length; i++)
        {
            dist = objectives[i].transform.position - transform.position;
            vn.AddHeading(weight * dist.normalized / objectives.Length);
        }
    }
    // Update is called once per frame
    void Update()
    {
        if (senseObjectives)
        {
            if (Random.value < senseFrequency * Time.deltaTime)
            {
                QueryEnvironment();
            }
        }

        for (int i = 0; i < objectives.Length; i++)
        {
            dist         = objectives[i].transform.position - transform.position;
            hiddenWeight = -1 / Mathf.Max(dist.sqrMagnitude, divZeroAccuracy);
            vn.AddHeading(weight * hiddenWeight * dist.normalized / objectives.Length);
        }
    }
Ejemplo n.º 4
0
    void Update()
    {
        if (localizedBehaviour)
        {
            if (Random.value < queryChance * Time.deltaTime)
            {
                QueryNeighbors();
            }
        }

        if (localizedBehaviour)
        {
            CalcLocalSeparation();
            CalcLocalAlignment();
            CalcLocalCohesion();
        }
        else
        {
            CalcSeparation();
            CalcAlignment();
            CalcCohesion();
        }
        vn.AddHeading(separationWeight * separation + alignmentWeight * alignment + cohesionWeight * cohesion);
    }