public override void OnDrag(PointerEventData eventData) { base.OnDrag(eventData); Vector3 deltaVector3 = new Vector3(eventData.delta.x, eventData.delta.y); RectTransformUtility.ScreenPointToLocalPointInRectangle(CanvasHelper.Main.transform as RectTransform, Input.mousePosition, CanvasHelper.Main.worldCamera, out Vector2 mousePosition); _targetPosition = mousePosition; Quaternion velocityRotation = Quaternion.LookRotation(deltaVector3); Vector3 rotationAxis = velocityRotation * Vector3.up; _destRotation = Quaternion.AngleAxis(eventData.delta.magnitude * 5f, rotationAxis); if (Owner.CardData.TargetType != CardTargetType.E_NonTarget) { if (RectTransformUtility.RectangleContainsScreenPoint(InGameInterface.Instance.HandField, Input.mousePosition)) { if (!IsVisible) { ((RectTransform)Owner.transform).anchoredPosition = _targetPosition; } SetUseEffect(false); IsVisible = true; CardRangeInterface.Instance.IsVisible = false; InGameInterface.Instance.ArrowBody.SetActive(false); } else { CardRangeInterface.Instance.IsVisible = true; InGameInterface.Instance.ArrowBody.SetActive(true); if (IsVisible) { SetUseEffect(true); } Vector3 basePos = InGameInterface.Instance.GetCardLocationInHand(Owner.HandIndex); Vector3 target = new Vector3(_targetPosition.x, _targetPosition.y, 0f); InGameInterface.Instance.ArrowBody.transform.localPosition = basePos; Vector2 arrowSize = ((RectTransform)InGameInterface.Instance.ArrowBody.transform).sizeDelta; arrowSize.y = (target - basePos).magnitude - 100f; ((RectTransform)InGameInterface.Instance.ArrowBody.transform).sizeDelta = arrowSize; Quaternion arrowRotation = Quaternion.FromToRotation(Vector3.up, (target - basePos).normalized); InGameInterface.Instance.ArrowBody.transform.localRotation = arrowRotation; if (Owner.CardData.TargetType == CardTargetType.E_Target) { RaycastHit2D hit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero); if (hit.collider != null) { _target.SetTarget(hit.collider.GetComponentInParent <Character>()); if (_target.Target is Player) { _target.SetTarget(null); } } else { _target.SetTarget(null); } InGameInterface.Instance.CollectCircle.SetActive(_target.Target != null); } else { Vector3 point = Isometric.GetIsometicBasePositionByWorldRay(Camera.main.ScreenToWorldPoint(Input.mousePosition), Camera.main.transform.forward); _target.SetTarget(point); CardRangeInterface.Instance.CurrentPoint = point; } } } else { if (RectTransformUtility.RectangleContainsScreenPoint(InGameInterface.Instance.HandField, Input.mousePosition)) { CardRangeInterface.Instance.IsVisible = false; } else { CardRangeInterface.Instance.IsVisible = true; } } }