private void Start() { group = CreateBoidGroup(); for (int i = 0; i < count; i++) { group.AddToGroup(Color.white, 2.5f); group.boids[i].enabled = false; group.boids[i].GetComponent <Collider>().enabled = false; } group.enabled = false; }
private void Update() { GameObject target = CalculateTarget(); if (target && canPanic) { transform.position = Vector3.MoveTowards(transform.position, target.transform.position, speed * 2.0f * Time.deltaTime); } else if (waypoint) { transform.position = Vector3.MoveTowards(transform.position, waypoint.transform.position, speed * Time.deltaTime); } for (int i = 0; i < boids.Count; i++) { if (boids[i] == null) { boids.RemoveAt(i); } } if (boids.Count <= 0) { manager.Destroy(team, gameObject); } else if (boids.Count <= maxCount * 0.5f && canPanic) { script_boidGroup closest = FindClosestGroup(); if (closest) { for (int i = 0; i < boids.Count; i++) { // might not be needed if (boids[i]) { boids[i].GetComponent <Rigidbody>().velocity = Vector3.zero; // closest.AddToGroup(boids[i]); boids[i].transform.parent = closest.transform; } } manager.Destroy(team, gameObject); } } }
public void Spawn(int count) { if (prefab) { GameObject bO = (Instantiate(prefab, transform.position, Quaternion.identity) as GameObject); script_boidGroup bG = bO.GetComponent <script_boidGroup>(); bG.SetTeam(team); bG.waypoint = startingPoints[Random.Range(0, startingPoints.Count)]; for (int i = 0; i < count; i++) { bG.AddToGroup(manager.GetTeamColor(team), 5.0f); } manager.AddToTeam(team, bO); } }