using UnityEngine;
using UnityEngine.InputSystem;

public class Animal : MonoBehaviour
{
    public LayerMask animalLayer;
    public AudioSource audioSource;
    public AudioClip crySound;

    [SerializeField] float rotateSpeed = 0.3f;
    [SerializeField] float followSpeed = 5f;
    [SerializeField] float followDistance = 1.5f;

    bool isDragging = false;
    Vector2 lastTouchPos;

    void Update()
    {
        if (Touchscreen.current == null) return;

        var touch = Touchscreen.current.primaryTouch;

        // 터치 시작
        if (touch.press.wasPressedThisFrame)
        {
            Vector2 touchPos = touch.position.ReadValue();
            Ray ray = Camera.main.ScreenPointToRay(touchPos);

            if (Physics.Raycast(ray, out RaycastHit hit, Mathf.Infinity, animalLayer))
            {
                if (hit.transform.IsChildOf(transform))
                {
                    isDragging = true;
                    lastTouchPos = touchPos;

                    if (crySound != null && !audioSource.isPlaying)
                        audioSource.PlayOneShot(crySound);
                }
            }
        }

        // 드래그 중 좌우 회전
        if (touch.press.isPressed && isDragging)
        {
            Vector2 currentPos = touch.position.ReadValue();
            float deltaX = currentPos.x - lastTouchPos.x;
            transform.Rotate(Vector3.up, -deltaX * rotateSpeed, Space.World);
            lastTouchPos = currentPos;
        }

        // 터치 종료
        if (touch.press.wasReleasedThisFrame)
            isDragging = false;

        // 항상 카메라 앞 중앙에 부드럽게 위치
        Vector3 targetPos = Camera.main.transform.position + Camera.main.transform.forward * followDistance;
        transform.position = Vector3.Lerp(transform.position, targetPos, followSpeed * Time.deltaTime);
    }
}