public void FixedUpdate()
{
foreach (var boid in collection.Boids)
{
if (UPhysics.Raycast(boid.Position, boid.Direction, anticipationDistance))
{
Debug.DrawLine(boid.Position, boid.Position + anticipationDistance * boid.Direction, Color.red);
foreach (var dir in maneuvers)
{
var globalDir = boid.Rotation * dir;
if (!UPhysics.SphereCast(new Ray(boid.Position, globalDir), 1f, maneuverDistance))
{
Debug.DrawLine(boid.Position, boid.Position + maneuverDistance * globalDir, Color.green);
boid.Acceleration += globalDir * intensity;
break;
}
else
{
Debug.DrawLine(boid.Position, boid.Position + maneuverDistance * globalDir, Color.red);
}
}
}
else
{
Debug.DrawLine(boid.Position, boid.Position + anticipationDistance * boid.Direction, Color.green);
}
}
}