50 lines
1.8 KiB
C#
50 lines
1.8 KiB
C#
using UnityEngine;
|
|
using UnityEngine.EventSystems;
|
|
|
|
public class KeranjangPintar : MonoBehaviour, IDropHandler
|
|
{
|
|
[Header("Keranjang ini untuk ekosistem apa?")]
|
|
public JenisEkosistem tipeKeranjang;
|
|
|
|
[Header("WAJIB ISI: Tarik Gambar Keranjang ke kotak ini!")]
|
|
public Transform gambarKeranjangVisual;
|
|
|
|
public void OnDrop(PointerEventData eventData)
|
|
{
|
|
if (eventData.pointerDrag != null)
|
|
{
|
|
DragHewan hewan = eventData.pointerDrag.GetComponent<DragHewan>();
|
|
|
|
// CEK: Apakah hewannya benar masuk ke ekosistem yang tepat?
|
|
if (hewan != null && hewan.asalEkosistem == this.tipeKeranjang)
|
|
{
|
|
// 1. JURUS PRESISI: Paksa posisi hewan pindah ke posisi tengah keranjang!
|
|
if (gambarKeranjangVisual != null)
|
|
{
|
|
// Pindahkan parent
|
|
hewan.transform.SetParent(gambarKeranjangVisual.parent, true);
|
|
hewan.transform.SetSiblingIndex(gambarKeranjangVisual.GetSiblingIndex());
|
|
|
|
// PAKSA POSISI KE TENGAH KERANJANG
|
|
hewan.transform.position = gambarKeranjangVisual.position;
|
|
}
|
|
|
|
// 2. JALANKAN JURUS BERHASIL
|
|
hewan.BerhasilMasukEkosistem();
|
|
|
|
// 3. Matikan biar gak bisa ditarik lagi
|
|
CanvasGroup cg = hewan.GetComponent<CanvasGroup>();
|
|
if (cg != null) {
|
|
cg.alpha = 1f;
|
|
cg.blocksRaycasts = false;
|
|
}
|
|
}
|
|
else if (hewan != null)
|
|
{
|
|
// Kalau salah, panggil suara salah di GameManager
|
|
GameManager gm = FindObjectOfType<GameManager>();
|
|
if (gm != null) gm.JawabanSalah();
|
|
}
|
|
}
|
|
}
|
|
} |