using UnityEngine; using UnityEngine.EventSystems; public class DragAndDrop : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler { public static GameObject DraggedInstance; public Inventory inventory; Vector3 _startPosition; Vector3 _offsetToMouse; float _zDistanceToCamera; #region Interface Implementations public void OnBeginDrag (PointerEventData eventData) { DraggedInstance = gameObject; _startPosition = transform.position; _zDistanceToCamera = Mathf.Abs (_startPosition.z - Camera.main.transform.position.z); _offsetToMouse = _startPosition - Camera.main.ScreenToWorldPoint ( new Vector3 (Input.mousePosition.x, Input.mousePosition.y, _zDistanceToCamera) ); } public void OnDrag (PointerEventData eventData) { if(Input.touchCount > 1) return; transform.position = Camera.main.ScreenToWorldPoint ( new Vector3 (Input.mousePosition.x, Input.mousePosition.y, _zDistanceToCamera) ) + _offsetToMouse; } public void OnEndDrag (PointerEventData eventData) { _offsetToMouse = Vector3.zero; if (Input.mousePosition.y < 75) { DraggedInstance.SetActive (false); inventory.AddItem (DraggedInstance.name); } DraggedInstance = null; } #endregion }