The best overloaded method match for `UnityEngine.Physics.Raycast(UnityEngine.Ray, float, int)' has some invalid arguments

Lo que quiero es simular el comportamiento de un arma de francotirador. Un disparo presenta dos características, precisión y exactitud. La precisión es un # aleatorio y está determinada por el eje x y la exactitud un # exacto y está determinada por el eje, ambos del punto final, el que va a colisionar con el objeto. Tengo un disparo es un vector, donde el origen lo tomo a partir de la posición de un objeto y el punto final creo que es el que debería tener esos parámetros transformados en x y y.
Este es el código que estoy utilizando para el rayo, para la posición.

origen = Camera.main.ScreenPointToRay (orign.position);
precision=Random.Range (80,100);
Vector3 colision = transform.position;
    colision.y +=exactitud;
    colision.x *= precision;
    transform.position=colision;
    if (Physics.Raycast (origen, out colision, Mathf.Infinity)) {
        //puntos del rayo
         line.SetPosition(0,orign.position);
         line.SetPosition(1,colision);//me aparece error en ésta línea. El siguiente:

The best overloaded method match for `UnityEngine.Physics.Raycast(UnityEngine.Ray, float, int)’ has some invalid arguments

Remove the out before colision

So…

if (Physics.Raycast(origen, colision, Mathf.Infinity))
...