private void OnTriggerEnter(Collider other) { script_boidGroup bG = other.GetComponent <script_boidGroup>(); if (bG && bG.GetTeam() == teamIndex && next) { bG.waypoint = next; } }
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); } }
private script_boidGroup CreateBoidGroup() { GameObject grp = new GameObject("Creep Group"); grp.transform.position = transform.position; grp.layer = LayerMask.NameToLayer("Waypoints"); script_boidGroup bG = grp.AddComponent <script_boidGroup>(); bG.boidPrefab = prefab; bG.speed = 1; bG.canPanic = false; bG.speed = prefabSpeed; grp.AddComponent <BoxCollider>().isTrigger = true; Rigidbody r = grp.AddComponent <Rigidbody>(); r.useGravity = false; r.constraints = RigidbodyConstraints.FreezePositionY; return(bG); }