Files
Dino_Love_Simulation/Assets/02_Scripts/Communication/Dialog/DialogGestureZone.cs
2026-07-23 10:50:22 +09:00

26 lines
1.3 KiB
C#

using UnityEngine;
// 히든 분기를 물리 접촉으로 발동시키는 트리거 존 (KimchiHitZone과 같은 방식).
//
// 예) NPC 얼굴에 IsTrigger 콜라이더를 붙이고 GestureKey="slap", RequiredTag="PlayerHand".
// 대화 노드의 HiddenBranch가 설정되고 HiddenGestureKey="slap"인 순간에만
// 이 존을 손으로 치면 히든 분기를 탄다. 그 외 시간엔 쳐도 아무 일도 안 일어난다.
//
// 콜라이더는 항상 켜 둬도 된다 — 발동 여부는 DialogPlayer의 무장 상태가 결정하므로,
// 노드마다 존을 껐다 켰다 할 필요가 없다.
public class DialogGestureZone : MonoBehaviour
{
[Tooltip("이 존이 발동시킬 제스처 키. 대화 노드의 HiddenGestureKey와 일치해야 한다. " +
"노드 쪽 키가 비어 있으면 아무 존이나 발동 가능")]
[SerializeField] private string _gestureKey = "slap";
[Tooltip("이 태그를 가진 콜라이더가 들어와야 발동 (예: 손 컨트롤러). 비우면 태그 무시")]
[SerializeField] private string _requiredTag = "PlayerHand";
private void OnTriggerEnter(Collider other)
{
if (!string.IsNullOrEmpty(_requiredTag) && !other.CompareTag(_requiredTag)) return;
HiddenBranchResolver.Fire(_gestureKey);
}
}