public void CreateBoids(int boidCount) { for (int i = 0; i < boidCount; i++) { SimpleVehicleModel boid = Instantiate(boidPrefab).GetComponent <SimpleVehicleModel>(); boid.gameObject.name = string.Format("Boid #{0}", i.ToString()); boid.Initialize(); boid.transform.position = cellGrid.GetRandomCell_ObstacleFree(0).transform.position + new Vector3(0f, 0.5f, 0f); boids.Add(boid); } }
void AssignPursuitTarget() { SimpleVehicleModel oldPursuitTarget = pursuer.movingTarget; SimpleVehicleModel randomBoid; bool isLookingForTarget = true; do { randomBoid = boids[Random.Range(0, boids.Count - 1)]; if (randomBoid != pursuer && randomBoid != oldPursuitTarget) { pursuer.movingTarget = randomBoid; isLookingForTarget = false; } }while (isLookingForTarget); }
public void ChangeMode_PursuitAndWander() { ResetModes(); isPursuitMode = true; pursuer = boids[0]; pursuer.ResetSteeringBehaviors(); AssignPursuitTarget(); pursuer.TogglePursuit(true); pursuer.ChangeMaterialHighlight(); pursuer.maxSpeed += 1; for (int i = 1; i < boids.Count; i++) { boids[i].ResetSteeringBehaviors(); boids[i].ToggleWander(true); boids[i].isAvoidingCollision = true; } }
public void ChangeMode_LeaderFollowing() { ResetModes(); isLeaderFollowingMode = true; leaderSeekTimer = timeTillLeaderSeekTargetChange; leaderSeekTarget.gameObject.SetActive(true); leaderSeekTarget.position = cellGrid.GetRandomCell(0).transform.position + new Vector3(0f, 0.5f, 0f); leader = boids[0]; leader.ResetSteeringBehaviors(); leader.isArriving = true; leader.targetTransform = leaderSeekTarget; leader.ChangeMaterialHighlight(); for (int i = 1; i < boids.Count; i++) { boids[i].ResetSteeringBehaviors(); boids[i].isLeaderFollowing = true; boids[i].leader = leader; boids[i].isSeperating = true; } }