using System; using UnityEngine; using UnityEngine.EventSystems; public class DraggableCard : MonoBehaviour, IPointerDownHandler, IDragHandler, IPointerUpHandler { private Vector3 originalPosition; private Vector3 originalScale; private CanvasGroup canvasGroup; private void Start() { canvasGroup = GetComponent(); } public void OnPointerDown(PointerEventData eventData) { var transform1 = transform; originalPosition = transform1.position; originalScale = transform1.localScale; canvasGroup.alpha = 0.5f; transform1.localScale = new Vector3(0.3f, 0.3f, 1f); } public void OnDrag(PointerEventData eventData) { transform.position = Input.mousePosition; Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; if (Physics.Raycast(ray, out hit) && hit.collider.CompareTag("Ground")) { // 마우스가 Ground 위에 있을 때 } } public void OnPointerUp(PointerEventData eventData) { // 지형에 올바르게 드롭되지 않으면 if (!IsDroppedOnTarget()) { var transform1 = transform; transform1.position = originalPosition; transform1.localScale = originalScale; canvasGroup.alpha = 1; } } private bool IsDroppedOnTarget() { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; if (Physics.Raycast(ray, out hit)) { if (hit.collider.CompareTag("Ground")) { Destroy(gameObject); return true; } } return false; } }