26 lines
1.3 KiB
C#
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);
|
|
}
|
|
}
|