private void OnDrag(EventContext context) { PointerEventData e = ( PointerEventData )context.eventData; this._source.position = this._startDragPosition; Vector2 currPointerPosition; RectTransformUtility.ScreenPointToLocalPointInRectangle(this._source.displayObject.rectTransform, e.position, Stage.inst.eventCamera, out currPointerPosition); Vector2 delta = currPointerPosition - this._startDragPointerPosition; delta.y = -delta.y; this._source.position += delta; if (this._restrictWorldCorners != null) { Vector3 min = this._restrictWorldCorners[0]; Vector3 max = this._restrictWorldCorners[2]; min = this._source.parent.displayObject.rectTransform.InverseTransformPoint(min); max = this._source.parent.displayObject.rectTransform.InverseTransformPoint(max); Vector2 size = this._source.displayObject.rect.size; Vector3 pos = this._source.displayObject.rectTransform.localPosition; pos.x = Mathf.Clamp(pos.x, min.x, max.x - size.x); pos.y = Mathf.Clamp(pos.y, min.y + size.y, max.y); this._source.displayObject.rectTransform.localPosition = pos; } e.StopPropagation(); }
private void OnDrag(EventContext context) { PointerEventData e = ( PointerEventData )context.eventData; Vector2 currPointerPosition; RectTransformUtility.ScreenPointToLocalPointInRectangle(this._source.displayObject.rectTransform, e.position, Stage.inst.eventCamera, out currPointerPosition); Vector2 delta = currPointerPosition - this._lastDragPointerPosition; delta.y = -delta.y; this.agent.position += delta; this._lastDragPointerPosition = currPointerPosition; e.StopPropagation(); }