private Vector2 Alignement(List <Transform> otherLocalBoids) { Vector2 dir = Vector2.zero; foreach (Transform localBoid in otherLocalBoids) { BoidScript bs = localBoid.GetComponent <BoidScript>(); dir += bs.velocity; } dir /= otherLocalBoids.Count; return(dir); }
bool checkColour(BoidScript b, BoidScript c) { if (b.gameObject.tag == c.gameObject.tag) { return(true); } else { return(false); } }
public List <BoidScript> GetOtherBoidsInFOV(BoidScript obj) { List <BoidScript> retBoids = new List <BoidScript> (); foreach (BoidScript boid in boids) { if (boid == obj) { continue; } Vector3 diff = boid.Position - obj.Position; if (diff.magnitude <= BoidFOV) { retBoids.Add(boid); } } return(retBoids); }
public List <IObject> GetVirtualBoidsOnWall(BoidScript obj) { List <IObject> boids = new List <IObject> (); float d; d = Up.GetDistanceToPoint(obj.transform.localPosition); if (d <= BoidFOV) { boids.Add(new VirtualBoid(obj.Position - d * Up.normal)); } d = Down.GetDistanceToPoint(obj.transform.localPosition); if (d <= BoidFOV) { boids.Add(new VirtualBoid(obj.Position - d * Down.normal)); } d = Left.GetDistanceToPoint(obj.transform.localPosition); if (d <= BoidFOV) { boids.Add(new VirtualBoid(obj.Position - d * Left.normal)); } d = Right.GetDistanceToPoint(obj.transform.localPosition); if (d <= BoidFOV) { boids.Add(new VirtualBoid(obj.Position - d * Right.normal)); } d = Forward.GetDistanceToPoint(obj.transform.localPosition); if (d <= BoidFOV) { boids.Add(new VirtualBoid(obj.Position - d * Forward.normal)); } d = Back.GetDistanceToPoint(obj.transform.localPosition); if (d <= BoidFOV) { boids.Add(new VirtualBoid(obj.Position - d * Back.normal)); } return(boids); }
Vector3 boundingBox(BoidScript b) { int Xmin = 1, Xmax = 25, Ymin = -1, Ymax = 1, Zmin = 1, Zmax = 25; Vector3 v = new Vector3(0, 0, 0); if (b.transform.position.x < Xmin) { v.x += 0.5f; } else if (b.transform.position.x > Xmax) { v.x += -0.5f; } if (b.transform.position.y < Ymin) { v.y += 0.1f; } else if (b.transform.position.y > Ymax) { v.y += -0.1f; } if (b.transform.position.z < Zmin) { v.z += 0.5f; } else if (b.transform.position.z > Zmax) { v.z += -0.5f; } return(v); }
public void addBoid(BoidScript b) { boids.Add(b); }