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