public void Setup(eBoidType aType) { MyType = aType; // Register with the BoidManager; GameObject bmgo = GameObject.FindGameObjectWithTag("BoidManager"); bm = bmgo.GetComponent<BoidManager>(); bm.RegisterBoid(this); switch(aType) { case eBoidType.Normal: MyAlgos.Add(new BoidAlgo_Avoidance(2.0f)); MyAlgos.Add(new BoidAlgo_Coherence(0.0005f)); MyAlgos.Add(new BoidAlgo_Alignment(4.0f)); MyAlgos.Add(new BoidAlgo_Bounds(1.0f)); MyVelocity = GetRandomStartingVelocity(); MyRepulsionRange = 1.0f; MyRepulsionFactor = 1.0f; break; case eBoidType.Predator: MyAlgos.Add(new BoidAlgo_Bounds(1.0f)); MyAlgos.Add(new BoidAlgo_Coherence(1.0f)); MyVelocity = GetRandomStartingVelocity() * 0.2f; MyRepulsionRange = 2.0f; MyRepulsionFactor = 1.0f; break; case eBoidType.Obstacle: MyRepulsionRange = 4.0f; MyRepulsionFactor = 2.0f; break; default: break; } }
public void SpawnBoid(eBoidType aBoidType, Vector3 aSpawnPos) { GameObject go = null; Boid newBoid = null; aSpawnPos.y = 0; switch (aBoidType) { case eBoidType.Normal: go = (GameObject)GameObject.Instantiate(BoidPrefabNormal, aSpawnPos, Quaternion.identity); break; case eBoidType.Predator: go = (GameObject)GameObject.Instantiate(BoidPrefabPredator, aSpawnPos, Quaternion.identity); break; case eBoidType.Obstacle: go = (GameObject)GameObject.Instantiate(BoidPrefabObstacle, aSpawnPos, Quaternion.identity); break; } if(go != null) { newBoid = (Boid)go.GetComponent("Boid"); } newBoid.Setup(aBoidType); MyNumberOfBoids++; NumBoidsCounter.text = "Boid Count : " + MyNumberOfBoids.ToString(); }