예제 #1
0
        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();
        }
예제 #2
0
        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();
        }