90 lines
2.8 KiB
C#
90 lines
2.8 KiB
C#
using UnityEngine;
|
|
using UnityEngine.EventSystems;
|
|
|
|
public enum JenisEkosistem { Sawah, Gurun, Perairan, Pengecoh }
|
|
|
|
public class DragHewan : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
|
|
{
|
|
private Vector3 posisiAwal;
|
|
private RectTransform rectTransform;
|
|
private CanvasGroup canvasGroup;
|
|
private Transform parentAwal;
|
|
|
|
[Header("Pilih Asal Ekosistem Hewan Ini:")]
|
|
public JenisEkosistem asalEkosistem;
|
|
|
|
[Header("Suara Narasi:")]
|
|
public AudioClip kasetNamaHewan; // Masukkan suara "Ular"
|
|
public AudioClip kasetNamaEkosistem; // Masukkan suara "Sawah"
|
|
|
|
void Awake()
|
|
{
|
|
rectTransform = GetComponent<RectTransform>();
|
|
canvasGroup = GetComponent<CanvasGroup>();
|
|
if (canvasGroup == null) canvasGroup = gameObject.AddComponent<CanvasGroup>();
|
|
}
|
|
|
|
public void OnBeginDrag(PointerEventData eventData)
|
|
{
|
|
posisiAwal = rectTransform.anchoredPosition;
|
|
parentAwal = transform.parent;
|
|
|
|
canvasGroup.alpha = 0.7f;
|
|
canvasGroup.blocksRaycasts = false;
|
|
|
|
transform.SetAsLastSibling();
|
|
|
|
// ==========================================
|
|
// NARATOR SEBUT NAMA HEWAN SAAT DIKLIK
|
|
// ==========================================
|
|
GameManager manajerGame = FindObjectOfType<GameManager>();
|
|
if (manajerGame != null && kasetNamaHewan != null)
|
|
{
|
|
manajerGame.speakerGame.PlayOneShot(kasetNamaHewan);
|
|
}
|
|
}
|
|
|
|
public void OnDrag(PointerEventData eventData)
|
|
{
|
|
rectTransform.anchoredPosition += eventData.delta / GetComponentInParent<Canvas>().scaleFactor;
|
|
}
|
|
|
|
public void OnEndDrag(PointerEventData eventData)
|
|
{
|
|
canvasGroup.alpha = 1f;
|
|
canvasGroup.blocksRaycasts = true;
|
|
|
|
// Jangan langsung dipanggil, beri jeda sedikit buat cek Keranjang
|
|
Invoke("KembaliKeAwal", 0.05f);
|
|
}
|
|
|
|
public void KembaliKeAwal()
|
|
{
|
|
transform.SetParent(parentAwal);
|
|
rectTransform.anchoredPosition = posisiAwal;
|
|
|
|
GameManager manajerGame = FindObjectOfType<GameManager>();
|
|
if (manajerGame != null)
|
|
{
|
|
manajerGame.JawabanSalah();
|
|
}
|
|
}
|
|
|
|
// ==========================================
|
|
// PERBAIKAN: Fungsi ini dipanggil dari 'KeranjangPintar'
|
|
// ==========================================
|
|
public void BerhasilMasukEkosistem()
|
|
{
|
|
CancelInvoke("KembaliKeAwal"); // Amankan biar gak mental balik
|
|
|
|
GameManager manajerGame = FindObjectOfType<GameManager>();
|
|
if (manajerGame != null)
|
|
{
|
|
// Kirim kaset suara ekosistem (Sawah/Gurun/Perairan) ke GameManager
|
|
manajerGame.TambahSkor(kasetNamaEkosistem);
|
|
}
|
|
|
|
// Script dimatikan biar gak bisa ditarik lagi setelah masuk
|
|
this.enabled = false;
|
|
}
|
|
} |