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