히든분기
This commit is contained in:
25
Assets/02_Scripts/Communication/Dialog/DialogGestureZone.cs
Normal file
25
Assets/02_Scripts/Communication/Dialog/DialogGestureZone.cs
Normal file
@@ -0,0 +1,25 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user