Vector3 Cohesion(List <SwarmMember> neighboursShortList) { Vector3 cohesionVector = new Vector3(); int countMembers = 0; var neighbours = controller.GetNeighboursUsingShortList(neighboursShortList, this, conf.cohesionRadius); if (neighbours.Count == 0) { return(cohesionVector); } foreach (var member in neighbours) { if (IsInFOV(rigidBody.position)) { cohesionVector += (Vector3)member.rigidBody.position; countMembers++; } } if (countMembers == 0) { return(cohesionVector); } cohesionVector /= countMembers; cohesionVector = cohesionVector - (Vector3)rigidBody.position; cohesionVector = Vector3.Normalize(cohesionVector); return(cohesionVector); }