private void Update() { if (!onTarget) { Vector2 direction = targetPosition - rectTransform.anchoredPosition; Vector2 newPosition = rectTransform.anchoredPosition + direction.normalized * Time.deltaTime * Mathf.Min(maxSpeed, requiredSpeed); if (Vector2.Distance(rectTransform.anchoredPosition, newPosition) < Vector2.Distance(rectTransform.anchoredPosition, targetPosition)) { Vector2 diff = rectTransform.anchoredPosition - newPosition; for (int i = 0; i < transform.childCount; i++) { DraggableUIItem draggable = transform.GetChild(i).GetComponent <DraggableUIItem>(); if (draggable != null) { if (draggable.isDragged) { draggable.GetComponent <RectTransform>().anchoredPosition += diff; } } } rectTransform.anchoredPosition = newPosition; } else { Vector2 diff = rectTransform.anchoredPosition - targetPosition; for (int i = 0; i < transform.childCount; i++) { DraggableUIItem draggable = transform.GetChild(i).GetComponent <DraggableUIItem>(); if (draggable != null) { if (draggable.isDragged) { draggable.GetComponent <RectTransform>().anchoredPosition += diff; } } } rectTransform.anchoredPosition = targetPosition; onTarget = true; } } }
public void AddConnectedItem(DraggableUIItem item) { connectedItems.Add(item); }
private void Start() { DraggableUIItem draggableUIItem = GetComponent <DraggableUIItem>(); draggableUIItem.onBeginDrag.AddListener(CreateDragCopy); }