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); } } }