Vector3 BoundPosition(BoidControl boid) { Vector3 v = Vector3.zero; if (boid.transform.position.x < -settings.xBound) { v = new Vector3(settings.boundFactor, v.y, v.z); } else if (boid.transform.position.x > settings.xBound) { v = new Vector3(-settings.boundFactor, v.y, v.z); } if (boid.transform.position.z < -settings.zBound) { v = new Vector3(v.x, v.y, settings.boundFactor); } else if (boid.transform.position.z > settings.zBound) { v = new Vector3(v.x, v.y, -settings.boundFactor); } if (boid.transform.position.y < -settings.yBound) { v = new Vector3(v.x, settings.boundFactor, v.z); } else if (boid.transform.position.y > settings.yBound) { v = new Vector3(v.x, -settings.boundFactor, v.z); } return(v); }
public BoidActionCohesion(BoidControl leader, IList<BoidControl> boidList, int cohesionRadius) { _leader = leader; _boidList = boidList; _cohesionRadius = cohesionRadius; _seekAction = new BoidActionSeek(); }
public BoidCombinedActionFCAS(BoidControl boid, IList<BoidControl> boidList, IList<BoidControl> predatorBoidsList, int cohesionRadius) { _boidList = boidList; _randomPredatorBoidsList = predatorBoidsList; _fleeAction = new BoidActionFlee(); _cohesionAction = new BoidActionCohesion(boid, boidList, cohesionRadius); _aligmentAction = new BoidActionAligment(boid, boidList); _separateAction = new BoidActionSeparate(boid, boidList); }
Vector3 FlockWithOthers(BoidControl boid, List <BoidControl> boids) { Vector3 vel = Vector3.zero; for (int i = 0; i < boids.Count; i++) { if (!boids[i].Equals(boid) && Vector3.Distance(boids[i].transform.position, boid.transform.position) < settings.flockRadius) { vel += boids[i].vel; } } return(vel / (boids.Count - 1)); }
Vector3 MoveAwayFromOthers(BoidControl boid, List <BoidControl> boids) { Vector3 c = Vector3.zero; for (int i = 0; i < boids.Count; i++) { if (!boids[i].Equals(boid) && Vector3.Distance(boids[i].transform.position, boid.transform.position) < settings.minDist) { c -= (boids[i].transform.position - boid.transform.position); } } return(c); }
Vector3 MoveToCenter(BoidControl boid, List <BoidControl> boids) { Vector3 center = Vector3.zero; for (int i = 0; i < boids.Count; i++) { if (!boids[i].Equals(boid)) { center += boids[i].transform.position; } } return(center / (boids.Count - 1)); }
void Start() { GameObject ground = GameObject.Find("Plane"); settings.xBound = ground.GetComponent <MeshFilter>().mesh.bounds.size.x / 2 * ground.transform.localScale.x; settings.zBound = ground.GetComponent <MeshFilter>().mesh.bounds.size.z / 2 * ground.transform.localScale.z; settings.yBound = 10f; for (int i = 0; i < numBoids; i++) { BoidControl newBoid = Instantiate(boid); newBoid.Init(settings); boids.Add(newBoid); } }
public void SetController(BoidControl givenController) { controller = givenController; minVelocity = controller.minVelocity; maxVelocity = controller.maxVelocity; randomness = controller.randomness; currentTarget = controller.testTarget; rule1Weight = controller.cOfMass; rule2Weight = controller.boidAvoid; rule3Weight = controller.vMatch; rule4Weight = controller.toGoal; rule5Weight = controller.torchAvoid; rule6Weight = controller.playerAvoid; if (controller.torch != null) { torch = controller.torch; } distFromOtherBoids = controller.distFromOtherBoids; }
//private int _aligmentRadius = 10; public BoidActionAligment(BoidControl packLeader, IList<BoidControl> boidList) { _leader = packLeader; _boidList = boidList; //_seek = new BoidActionSeek(); }
public BoidActionSeparate(BoidControl boid, IList<BoidControl> boidList) { _boidList = new List<BoidControl>(); _boid = boid; _boidList = boidList; }