public override Vector2 CalulateMove(FlockAgent agent, List <Transform> context, Flock flock) { //if no neighbors, return no adjustment if (context.Count == 0) { return(Vector2.zero); } //add all points together and average Vector2 avoidanceMove = Vector2.zero; int nAvoid = 0; List <Transform> filteredContext = (filter == null) ? context : filter.Filter(agent, context); foreach (Transform item in filteredContext) { if (Vector2.SqrMagnitude(item.position - agent.transform.position) < flock.SquareAvoidanceRadius) { nAvoid++; avoidanceMove += (Vector2)(agent.transform.position - item.position * 5); agent.SetScared(true); Debug.Log("avoidancemove: " + avoidanceMove); } } if (nAvoid > 0) { // avoidanceMove /= nAvoid; } return(avoidanceMove); }