Exemplo n.º 1
0
        override public Vector3 Calc(BoidConfig aConfig, Boid aThisBoid, List<Boid> aAllBoids)
        {
            Vector3 output = new Vector3(0f, 0f, 0f);
            int numInteracted = 0;

            foreach (Boid boid in aAllBoids)
            {
                if (boid != aThisBoid && boid.GetBoidType() == eBoidType.Normal)
                {
                    Vector3 diff = (aThisBoid.transform.position - boid.transform.position);
                    if (diff.magnitude < aConfig.DefaultInteractionRange)
                    {
                        output = output + boid.transform.position;
                        numInteracted++;
                    }
                }
            }

            if(numInteracted > 0)
            {
                return ((output / numInteracted) - aThisBoid.transform.position) * myWeight;
            }
            else
            {
                return output * myWeight;
            }
        }
Exemplo n.º 2
0
 private void Awake()
 {
     if (Instance)
     {
         Destroy(this);
     }
     else
     {
         Instance = this;
     }
 }
Exemplo n.º 3
0
        override public Vector3 Calc(BoidConfig aConfig, Boid aThisBoid, List<Boid> aAllBoids)
        {
            Vector3 output = new Vector3(0.0f, 0.0f, 0.0f);

            foreach (Boid boid in aAllBoids)
            {
                if(boid != aThisBoid)
                {
                    Vector3 diff = (boid.transform.position - aThisBoid.transform.position);
                    if (diff.magnitude < boid.GetRepulsionRange())
                    {
                        // output = (((output - diff)) / Mathf.Min(diff.magnitude, 1.0f)) * boid.GetRepulsionFactor();
                        output = output - diff * boid.GetRepulsionFactor() ;
                    }
                }
            }

            return output * myWeight;
        }
Exemplo n.º 4
0
        override public Vector3 Calc(BoidConfig aConfig, Boid aThisBoid, List<Boid> aAllBoids)
        {
            Vector3 output = new Vector3(0.0f, 0.0f, 0.0f);

            if (aThisBoid.transform.position.x < aConfig.SpawnBoundsStart.x + 1.0f)
                output.x = 1.0f;
            else if (aThisBoid.transform.position.x > aConfig.SpawnBoundsEnd.x - 1.0f)
                output.x = -1.0f;

            if (aThisBoid.transform.position.y < aConfig.SpawnBoundsStart.y + 1.0f)
                output.y = 1.0f;
            else if (aThisBoid.transform.position.y > aConfig.SpawnBoundsEnd.y - 1.0f)
                output.y = -1.0f;

            if (aThisBoid.transform.position.z < aConfig.SpawnBoundsStart.z + 1.0f)
                output.z = 1.0f;
            else if (aThisBoid.transform.position.z > aConfig.SpawnBoundsEnd.z - 1.0f)
                output.z = -1.0f;

            return output * myWeight;
        }
Exemplo n.º 5
0
 public abstract Vector3 Calc(BoidConfig aConfig, Boid aThisBoid, List<Boid> aAllBoids);