2026-07-10 대화 끼어들기 구현

This commit is contained in:
2026-07-10 12:55:02 +09:00
parent a368a27465
commit 173f3823b6
13 changed files with 316 additions and 10 deletions

View File

@@ -70,9 +70,12 @@ private void OnDestroy()
// - 배치는 화자 오브젝트의 DialogHudPlacement 값 사용, 없으면 이 컴포넌트의 기본값 폴백
// - speakerNameOverride가 비어있지 않으면 CharacterData.Name 대신 그 이름을 표시한다 (예: "???")
// - 화자의 DialogHudPlacement에 후보 목록이 있으면 벽/가림 검사를 통과하는 첫 후보 위치로 자동 배치
public void Show(CharacterData speaker, string text, string speakerNameOverride = null)
// - anchorOverride가 있으면 창의 위치/배치만 그 캐릭터 기준으로 하고 이름/대사는 speaker 것을 쓴다
// (다른 NPC가 끼어드는 대사지만 창은 대화 주인 옆에 두고 싶을 때)
public void Show(CharacterData speaker, string text, string speakerNameOverride = null, CharacterData anchorOverride = null)
{
var voiceObj = speaker != null ? CharacterVoiceObject.Find(speaker) : null;
var anchorData = anchorOverride != null ? anchorOverride : speaker;
var voiceObj = anchorData != null ? CharacterVoiceObject.Find(anchorData) : null;
_speakerTransform = voiceObj != null ? voiceObj.transform : null;
DialogHudPlacement placement = null;