39 lines
1.4 KiB
C#
39 lines
1.4 KiB
C#
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<RectTransform>();
|
|
canvasGroup = GetComponent<CanvasGroup>();
|
|
canvas = GetComponentInParent<Canvas>();
|
|
// 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;
|
|
}
|
|
}
|
|
} |