/// <summary> /// Obtener el receptor más cercano /// </summary> /// <param name="tapReceivers"></param> /// <returns></returns> public ITapReceiver GetCloserObject(List <ITapReceiver> tapReceivers) { if (tapReceivers.Count > 0) { ITapReceiver closer = tapReceivers[0]; float closerDistance = closer.GetGameObject().transform.position.z - InputController.Instance.mainCamera.transform.position.z; for (int i = 1; i < tapReceivers.Count; i++) { float distance = tapReceivers[i].GetGameObject().transform.position.z - InputController.Instance.mainCamera.transform.position.z; if (distance < closerDistance) { closerDistance = distance; closer = tapReceivers[i]; } } return(closer); } return(null); }
public void OnPointerUp(PointerEventData eventData) { if (enableMultiTouch || activePointers.Count == 0) { List <ITapReceiver> pointerDownReceivers; if (useCircleCast) { pointerDownReceivers = InputToCircleCast <ITapReceiver>(eventData.position, circleCastRadius); } else { pointerDownReceivers = InputToRaycast <ITapReceiver>(eventData.position); } /* * for (int i = 0; i < pointerDownReceivers.Count; i++) * pointerDownReceivers[i].OnPointerUp(position); */ ITapReceiver tapReceiver = GetCloserObject(pointerDownReceivers); tapReceiver?.OnPointerUp(position); } activePointers.Remove(eventData.pointerId); }