using UnityEngine; // 상호작용 가능한 오브젝트의 베이스. InteractionDetector가 이 타입을 감지하고 Interact()를 호출한다. // 감지를 위해 Collider가 반드시 필요 (RequireComponent로 강제). [RequireComponent(typeof(Collider))] public abstract class InteractionObject : MonoBehaviour { [SerializeField] protected string _promptText = "상호작용"; // UI 프롬프트 문구 (예: "앉으려면 E") [SerializeField] protected Transform _interactionPos; [SerializeField] protected GameObject _visible; // 지속형 상호작용이 진행 중인지 (예: 앉아있는 중). // true인 동안 디텍터는 대상을 이 오브젝트로 잠가, 다음 키 입력이 종료(해제)로 가게 한다. public bool IsInteracting { get; protected set; } public virtual string PromptText => _promptText; // 상호작용 키를 눌렀을 때 호출. 시작/종료(토글) 여부는 각 구현이 결정한다. public abstract void Interact(PlayerController player); public void VisibleUI(bool isOn) { _visible.SetActive(isOn); } }