using UnityEngine; using UnityEngine.EventSystems; public class PotonganPuzzleUI : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler { public string idPotongan; // Isi di Inspector: P1, P2, dst private RectTransform rectTransform; private CanvasGroup canvasGroup; private Vector3 posisiAwal; private Canvas canvas; void Awake() { rectTransform = GetComponent(); canvasGroup = GetComponent(); canvas = GetComponentInParent(); // Simpan posisi awal di area acak biar bisa balik kalau salah posisiAwal = rectTransform.anchoredPosition; } public void OnBeginDrag(PointerEventData eventData) { canvasGroup.alpha = 0.7f; // Efek agak transparan pas ditarik canvasGroup.blocksRaycasts = false; // Tembus biar bisa deteksi Wadah di bawahnya } public void OnDrag(PointerEventData eventData) { // Gerakan kepingan ngikutin kursor rectTransform.anchoredPosition += eventData.delta / canvas.scaleFactor; } public void OnEndDrag(PointerEventData eventData) { canvasGroup.alpha = 1f; canvasGroup.blocksRaycasts = true; // Kalau dilepas tapi tidak nempel (parent-nya masih TempatAcak), balik ke posisi semula if (transform.parent.name == "TempatAcak") { rectTransform.anchoredPosition = posisiAwal; } } }