Drag, Drop, and Attach
Hi! I'm relatively new to Unity and struggling with parent/child attachments. In my gameplay, I have three wheels stacked atop one another that rotate freely when clicked and dragged. I then have a target that can be dragged and dropped onto the top layer and should then attach as a child object and move with the top wheel. Everything is working except the attachment of the parent and child.
This is my current code:
     private bool dragging = false;
     private float distance;
     Vector3 originalPosition;
     private int times;
     private bool isOver = false;
     RaycastHit hit;
     Ray ray;
 
 
     void Start ()
     {
         originalPosition = transform.position;
         times = 1;
     }
 
     public void OnPointerEnter (PointerEventData eventData)
     {
         isOver = true;
     }
 
     public void OnPointerExit (PointerEventData eventData)
     {
         isOver = false;
     }
 
     void OnMouseDown ()
     {
         distance = Vector3.Distance (transform.position, Camera.main.transform.position);
         dragging = true;
     }
 
     void OnMouseUp ()
     {
         dragging = false;
     }
 
     void Update ()
     {
            if (Input.GetMouseButtonDown (0) && times >= 1 && isOver == true) {
             times--;
             
         } else if (Input.GetMouseButtonDown (1)) {
             times = 1;
             transform.position = originalPosition;
 
         } else if (Input.GetMouseButtonUp (0) && dragging == true) {
             RaycastHit hit;
             Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
             if (Physics.Raycast (ray, out hit)) {
                 if (hit.collider == this.gameObject) {
                     GameObject topLayer = GameObject.FindWithTag ("Back3");
                     this.transform.parent = topLayer.transform;
                 }
             }
         }
             
         if (dragging) {
             Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
             Vector3 rayPoint = ray.GetPoint (distance);
             transform.position = rayPoint;
         }
     }        
 
 
 
               I know that it isn't the cleanest ever. Any input on what I'm doing wrong with attaching the target to the top layer?
Specific problem spot:
 RaycastHit hit;
             Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
             if (Physics.Raycast (ray, out hit)) {
                 if (hit.collider == this.gameObject) {
                     GameObject topLayer = GameObject.FindWithTag ("Back3");
                     this.transform.parent = topLayer.transform;
                 }
             }
 
              Your answer
 
             Follow this Question
Related Questions
Stubborn Pick Up Script 0 Answers
EventSystem.Current.RaycastAll not returning any results whatsoever 0 Answers
Physics.Raycast Hit Distance 0 Answers
A canvas to let through a given layer 0 Answers
Raycast to play animation 1 Answer