Raihan_TugasAkhir/Assets/Script/DragPotonganPuzzle.cs

74 lines
2.2 KiB
C#

using UnityEngine;
using UnityEngine.EventSystems;
public class DragPotonganPuzzle : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
{
[Header("Pengaturan Target")]
public RectTransform targetPosisiBenar;
public float jarakToleransi = 70f;
[Header("Pengaturan Audio & Bos Puzzle")]
public AudioSource sumberSuara;
public AudioClip klipPasangBenar;
public AudioClip klipPasangSalah;
public PuzzleManager bosPuzzle;
private RectTransform rectTransform;
private Canvas canvas;
private Vector2 posisiAwal;
private bool sudahTerpasang = false;
void Awake()
{
rectTransform = GetComponent<RectTransform>();
canvas = GetComponentInParent<Canvas>();
}
public void OnBeginDrag(PointerEventData eventData)
{
if (sudahTerpasang) return;
posisiAwal = rectTransform.anchoredPosition;
transform.SetAsLastSibling();
}
public void OnDrag(PointerEventData eventData)
{
if (sudahTerpasang) return;
rectTransform.anchoredPosition += eventData.delta / canvas.scaleFactor;
}
public void OnEndDrag(PointerEventData eventData)
{
if (sudahTerpasang) return;
// Mengukur jarak kepingan dengan target bayangannya
float jarak = Vector2.Distance(rectTransform.anchoredPosition, targetPosisiBenar.anchoredPosition);
if (jarak <= jarakToleransi)
{
// ==========================================
// 🔥 JIKA JAWABAN BENAR!
// ==========================================
rectTransform.anchoredPosition = targetPosisiBenar.anchoredPosition;
sudahTerpasang = true;
if (sumberSuara != null && klipPasangBenar != null)
sumberSuara.PlayOneShot(klipPasangBenar);
if (bosPuzzle != null) bosPuzzle.TambahPotonganBenar();
}
else
{
// ==========================================
// ❌ JIKA JAWABAN SALAH!
// ==========================================
rectTransform.anchoredPosition = posisiAwal;
if (GameManagerHewan.instance != null)
{
GameManagerHewan.instance.JawabanSalah();
}
}
}
}