70 lines
2.1 KiB
C#
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;
|
|
}
|
|
} |