Ekosistem_Game/Assets/Script/SlotSiluet.cs

70 lines
2.1 KiB
C#

using UnityEngine;
using UnityEngine.EventSystems;
using System.Collections;
public class SlotSiluet : MonoBehaviour, IDropHandler
{
[Header("Identitas (Harus sama dengan DragBenda)")]
public string idSlot;
public void OnDrop(PointerEventData eventData)
{
// Cek apakah ada benda yang dilepas di atas bayangan ini
if (eventData.pointerDrag != null)
{
DragBenda benda = eventData.pointerDrag.GetComponent<DragBenda>();
// Cek apakah ID-nya cocok
if (benda != null && benda.idHewan == idSlot)
{
Debug.Log("MANTAP BOS! " + idSlot + " Cocok!");
RectTransform bendaRect = benda.GetComponent<RectTransform>();
RectTransform slotRect = GetComponent<RectTransform>();
// 1. KUNCI POSISI & PARENT
benda.transform.SetParent(transform);
// 2. PAS-KAN DI TENGAH BAYANGAN
bendaRect.position = slotRect.position;
// 3. SESUAIKAN UKURAN & SKALA
bendaRect.sizeDelta = slotRect.sizeDelta;
bendaRect.localScale = slotRect.localScale;
// 4. JALANKAN ANIMASI MEMBAL (BIAR KEREN)
StartCoroutine(AnimasiBendaMasuk(bendaRect));
// 5. LAPOR KE SCRIPT DRAG BENDA (UNTUK SUARA & SKOR)
benda.BerhasilMasukSiluet();
}
}
}
// Coroutine biar hewannya auto membesar pas masuk
IEnumerator AnimasiBendaMasuk(RectTransform target)
{
Vector3 skalaAwal = target.localScale;
Vector3 skalaGede = skalaAwal * 1.3f; // Membesar ke 130%
float t = 0;
// Fase 1: Membesar
while (t < 1f)
{
t += Time.deltaTime * 10f;
target.localScale = Vector3.Lerp(skalaAwal, skalaGede, t);
yield return null;
}
t = 0;
// Fase 2: Kembali normal
while (t < 1f)
{
t += Time.deltaTime * 8f;
target.localScale = Vector3.Lerp(skalaGede, skalaAwal, t);
yield return null;
}
target.localScale = skalaAwal;
}
}