Convierta 3D Raycast a Raycast2D

Tengo este código a continuación que podría controlar un jugador tocado entre 3 jugadores. Pude implementarlo haciendo una especie de "trampa" agregando un cubo 3D detrás de un sprite 2D ya que mi juego debería estar en 2D y me cuesta mucho implementarlo en 2D. Estoy realmente confundido sobre cómo hacerlo en 2D porque estoy realmente confundido sobre los parámetros.

Aunque ya lo implementé de la manera mencionada anteriormente, todavía quiero implementarlo en 2D puro. Y debido a que tengo este problema cuando el jugador seleccionado se mueve, el sprite se mueve más rápido.

public GameObject target = null;

// Use this for initialization
void Start () {
}

// Update is called once per frame
void Update () 
{
   if(Input.touchCount > 0 || Input.GetTouch(0).phase == TouchPhase.Began)
   {
       Ray ray = Camera.main.ScreenPointToRay(Input.GetTouch(0).position);
       Debug.DrawRay(ray.origin,ray.direction * 20,Color.red);
       RaycastHit hit;
       if(Physics.Raycast(ray, out hit,Mathf.Infinity))
       {
            Debug.Log(hit.transform.gameObject.name);
            if(this.target != null){
                SelectMove sm = this.target.GetComponent<SelectMove>();
                if(sm != null){ sm.enabled = false; }
            }
            target = hit.transform.gameObject; 
            //Destroy(hit.transform.gameObject);
            selectedPlayer();
        }
    }
}

void selectedPlayer(){
    SelectMove sm = this.target.GetComponent<SelectMove>();
    if(sm == null){
        target.AddComponent<SelectMove>();
    }
    sm.enabled = true;  
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta