protected override Vector2 DoForceCalculation() { Vector2 steeringForce = Vector2.zero; for (int i = 0; i < neighbours.NeighbourCount; i++) { Collider2D neighbour = neighbours.GetNeighbour(i); Vector2 toNeigh = transform.position - neighbour.transform.position; steeringForce += toNeigh.normalized / toNeigh.magnitude; } return(steeringForce); }
protected override Vector2 DoForceCalculation() { Vector2 avgHeading = Vector2.zero; for (int i = 0; i < neighbours.NeighbourCount; i++) { Collider2D neighbour = neighbours.GetNeighbour(i); avgHeading += (Vector2)neighbour.transform.up; } if (neighbours.NeighbourCount > 0) { avgHeading /= neighbours.NeighbourCount; avgHeading -= (Vector2)transform.up; } return(avgHeading); }
protected override Vector2 DoForceCalculation() { Vector2 centerOfMass = Vector2.zero; Vector2 steeringForce = Vector2.zero; for (int i = 0; i < neighbours.NeighbourCount; i++) { Collider2D neighbour = neighbours.GetNeighbour(i); centerOfMass += (Vector2)neighbour.transform.position; } if (neighbours.NeighbourCount > 0) { centerOfMass /= neighbours.NeighbourCount; steeringForce = seek.CalculateForce(centerOfMass); } return(steeringForce); }