Why can I not make the optional agruments to my Raycast work?
I have some trouble with Raycast. Well, actually, it's working perfectly at the moment, but I'm wondering why my previous attempts did not work. Here is the current code:
 public LayerMask layer;
 private void FixedUpdate ()
 {
     Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
     RaycastHit hit
     // bool hasClicked is set in Update() to true if there has been a mouse click
     if (hasClicked && Physics.Raycast(ray, out hit, Mathf.Infinity, layer))
     {
         // Do the things I want with the different attributes of hit
         hasClicked = false;
     }
 }
 
               As I said, this works fine. But I am having trouble understanding why some other Raycast calls fail. In the documentation, the overload that I want looks like this:
 public static bool Raycast(
     Ray ray, 
     out RaycastHit hitInfo,
     float maxDistance = Mathf.Infinity, 
     int layerMask = DefaultRaycastLayers, 
     QueryTriggerInteraction queryTriggerInteraction = QueryTriggerInteraction.UseGlobal);
 
               The easiest use of this would be the call Physics.Raycast(ray, out hit), but for my purposes I need to specify a value for layerMask. I've read up on optional and named arguments for C#, trying to do this call without specifying maxDistance, and I have no idea why the call Physics.Raycast(ray, out hit, layerMask: layer) gives errors. The errors reported by Unity are as follows: 
The best overloaded method match for `UnityEngine.Physics.Raycast(UnityEngine.Ray, float, int)' has some invalid arguments
Argument `#2' does not require `out' modifier. Consider removing `out' modifier
How come it can't find the correct overload? Is it somehow my fault (i.e. is this as expected from the C# specifications), or is C# and Unity's compiler just bad at finding the correct overload when I meddle with the named and optional arguments?
Even when I try to name everything, and call Physics.Raycast(ray: ray, hitInfo: out hit, layerMask: layer) I get the following error
The best overloaded method match for `UnityEngine.Physics.Raycast(UnityEngine.Ray, out UnityEngine.RaycastHit, float)' does not contain a parameter named `layerMask'
Once again, it's struggling to find the correct overload. Is it at all possible to call the overload that I want without specifying maxDistance? 
Your answer
 
             Follow this Question
Related Questions
Unity Error CS1729 The Type 'Plane' does not contain a constructer that takes 2 arguments 0 Answers
How to cast a Ray using local pivot of an object? 1 Answer
Third person shooter need some help 0 Answers
Error CS165 after Update 1 Answer
wall check is always returning true even though the distance doesn't fit my parameters :( 1 Answer