DragDrop.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | using System.Collections; using System.Collections.Generic; using UnityEngine; public class DragDrop : MonoBehaviour { Vector3 offset; public string destinationTag = "DropArea" ; void OnMouseDown() { offset = transform.position - MouseWorldPosition(); transform.GetComponent<Collider>().enabled = false ; } void OnMouseDrag() { transform.position = MouseWorldPosition() + offset; } void OnMouseUp() { var rayOrigin = Camera.main.transform.position; var rayDirection = MouseWorldPosition() - Camera.main.transform.position; RaycastHit hitInfo; if (Physics.Raycast(rayOrigin, rayDirection, out hitInfo)) { if (hitInfo.transform.tag == destinationTag) { transform.position = hitInfo.transform.position; } } transform.GetComponent<Collider>().enabled = true ; } Vector3 MouseWorldPosition() { var mouseScreenPos = Input.mousePosition; mouseScreenPos.z = Camera.main.WorldToScreenPoint(transform.position).z; return Camera.main.ScreenToWorldPoint(mouseScreenPos); } } |