using UnityEngine; using UnityEngine.EventSystems; public class DragBenda : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler { [Header("Identitas")] public string idHewan; [Header("Kaset Suara (Edukasi)")] public AudioClip kasetNamaHewan; // Contoh: Narasi "Gajah" public AudioClip suaraHewanIni; // Contoh: Suara asli gajah (trompet) [HideInInspector] public Transform parentAwal; [HideInInspector] public Vector3 posisiAwal; [HideInInspector] public Vector3 scaleAwal; private CanvasGroup canvasGroup; void Start() { scaleAwal = transform.localScale; canvasGroup = GetComponent(); if (canvasGroup == null) canvasGroup = gameObject.AddComponent(); } public void OnBeginDrag(PointerEventData eventData) { posisiAwal = transform.position; parentAwal = transform.parent; transform.SetParent(transform.root); transform.SetAsLastSibling(); canvasGroup.blocksRaycasts = false; // ========================================== // TAMBAHAN: NARATOR SEBUT NAMA HEWAN! // ========================================== GameManagerSiluet managerGame = FindObjectOfType(); if (managerGame != null && kasetNamaHewan != null) { managerGame.speakerGame.PlayOneShot(kasetNamaHewan); } } public void OnDrag(PointerEventData eventData) { transform.position = eventData.position; } public void OnEndDrag(PointerEventData eventData) { canvasGroup.blocksRaycasts = true; if (transform.parent == transform.root) { transform.SetParent(parentAwal); transform.position = posisiAwal; transform.localScale = scaleAwal; GameManagerSiluet managerGame = FindObjectOfType(); if (managerGame != null) { managerGame.JawabanSalah(); } } } // ========================================== // FUNGSI KHUSUS: DIPANGGIL OLEH SLOT SILUET // ========================================== public void BerhasilMasukSiluet() { GameManagerSiluet managerGame = FindObjectOfType(); if (managerGame != null) { // Kirim suara asli hewannya ke manager untuk diputar managerGame.TambahSkor(suaraHewanIni); } this.enabled = false; // Matikan script drag agar tidak bisa ditarik lagi } }