public void OnDrag(PointerEventData eventData) { if (Interactable) { transform.position = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, zDistanceToCamera)); List <RaycastResult> raycastResults = new List <RaycastResult>(); PointerEventData pointerData = new PointerEventData(EventSystem.current); pointerData.position = Input.mousePosition; EventSystem.current.RaycastAll(pointerData, raycastResults); CardBoardPartView hitArea = null; foreach (RaycastResult raycastItem in raycastResults) { hitArea = raycastItem.gameObject.GetComponent <CardBoardPartView>(); if (hitArea != null) { break; } } if (currentAreaSelected != hitArea) { if (currentAreaSelected != null) { currentAreaSelected.OnPointerExit(eventData); } currentAreaSelected = hitArea; if (currentAreaSelected != null) { currentAreaSelected.OnPointerEnter(eventData); } } } }