본 문서는 몬스터가 플레이어를 인지하는 시야 와 청각 메커니즘, 그리고 그것을 트리거하는 소음 시스템을 정의한다. 몬스터 AI §2에서 인지 전환 트리거로 참조된다.
이 시스템의 핵심
시야(Sight)와 청각(NoiseReceiver)은 독립 채널 — 둘 중 하나만 트리거돼도 인지 전환이 발생한다.
소음 임계는 몬스터별 차등 고정값 , 수신 범위는 auditoryPerception 스탯 종속 — 소리를 줄이는 것과 멀리 있는 것은 다른 레버다.
걷기는 소음 30% — 이동 모드 선택이 스텔스의 핵심이다.
flowchart LR
subgraph PLAYER [플레이어 행동]
MW[걷기 소음 30%]
MR[이동 소음 100%]
MS[질주 소음 150%]
ATK[공격·행동 소음]
end
subgraph DETECT [인지 채널]
NE[NoiseEmitter<br/>baseRadius × noisePower]
SI[Sight<br/>120도 콘 + sightRange]
end
subgraph RESULT [인지 결과]
AL[Alert 의심]
AW[Aware 전투]
end
MW & MR & MS & ATK --> NE
NE -->|임계 30dB 초과| AL
SI -->|시야 각도 통과| AW
AL -->|재소음·피격| AW
classDef player fill:#e0f2fe,stroke:#0284c7,stroke-width:2px,color:#075985
classDef detect fill:#ede9fe,stroke:#7c3aed,stroke-width:2px,color:#4c1d95
classDef alert fill:#fef3c7,stroke:#d97706,stroke-width:2px,color:#78350f
classDef aware fill:#fecaca,stroke:#dc2626,stroke-width:2.5px,color:#7f1d1d
class MW,MR,MS,ATK player
class NE,SI detect
class AL alert
class AW aware
원칙 규칙 의미 두 채널 독립 시야와 청각은 독립적으로 인지 전환을 만든다 시야 각도 밖에 있어도 소리가 크면 걸린다 임계 기반 인지 30dB 이상 소음 또는 시야 각도 진입 시 인지 임계 이하 소음은 무시된다 결과 변경 시에만 이벤트 OnSightResultChanged·OnNoiseResultChanged는 결과가 바뀔 때만 발행매 틱 이벤트 스팸 없이 효율적 이동 모드가 소음을 결정 걷기 30% / 이동 100% / 질주 150% 이동 선택이 곧 스텔스 선택이다
요소 의미 sightRange시야 거리. SphereCollider.radius로 설정 sightAngle시야 각도 (전방 콘 — 좌우 각도 합) includeRangeCharacterHitboxes시야 거리 안에 들어온 캐릭터 콜라이더 풀 closestRangeCharacter거리 안 가장 가까운 캐릭터 closestSightCharacter각도까지 통과해 실제 시야 안에 있는 가장 가까운 캐릭터
OnTriggerEnter (캐릭터가 sightRange 진입)
→ includeRangeCharacterHitboxes에 추가
→ 거리 가장 가까운 캐릭터 선택 (closestRangeCharacter)
→ CheckSightAngle: 모델 forward와 대상 방향의 각도가 sightAngle/2 이하인가
→ true: closestSightCharacter = 해당 캐릭터, IsInSight = true
→ false: closestSightCharacter = null, IsInSight = false
→ 결과가 바뀌면 OnSightResultChanged 발행
파라미터 기본값 시야 각도 120도 (전방 콘)근접 인지 거리 3m (시야 무관 자동 인지)
SetupSight(range, angle)로 몬스터별 차등 가능. 실제 시야 거리는 몬스터별 개별 설정.
DevTools.DrawMonsterSight가 활성화되면 Visualizer.UpdateMonsterSight로 시야 콘이 화면에 시각화된다. 시야 각도·거리·몬스터 상태가 색상으로 반영된다.
요소 의미 AuditoryPerception청각 인지 능력 (=Stat.auditoryPerception) emitters현재 청각 범위 내에서 활성화된 NoiseEmitter 리스트 ResultNoiseResult { IsHeard, ClosestNoiseEmitter }
→ 영향 범위(EffectiveRadius) 내 NoiseReceiver들에게 AddEmitter
→ NoiseReceiver는 가장 가까운 Emitter를 ClosestNoiseEmitter로 캐시
→ IsHeard = true, OnNoiseResultChanged 발행
Emitter가 소리를 멈추거나 범위 밖으로 나가면
→ 남은 emitter가 0이면 IsHeard = false 발행
의심 단계 전환 임계: 몬스터별 차등 수치 (PDF 기준 예시 30dB).
임계 자체는 스테이터스 영향을 받지 않는 고정 수치 (몬스터별로는 다름).
AuditoryPerception 스탯은 청각 인지 **범위(거리)**에 별도 영향을 준다.
요소 의미 MinDistance음원에서 이 거리까진 최대 강도 MaxDistance이 거리를 넘으면 들리지 않음 baseRadius기본 영향 반경 noisePower소음 배수. 기본 1, 상황에 따라 조정 EffectiveRadius최종 유효 반경 (baseRadius × noisePower)
발생원 강도 (기본 100% 기준) 걷기 30% 일반 이동 100% 질주 150% 무기 휘두름 (무기별 정의) 무기 타격 (무기·재질별 정의) 환경 파괴 (오브젝트 종속, 추후) 환경 소음 (총성·폭발 등) (이벤트성, 추후)
소음은 Unity AudioSource 거리 감쇠 모델을 사용한다.
MinDistance 이내: 최대 강도.
MinDistance ~ MaxDistance: 거리에 따라 감쇠.
MaxDistance 이상: 들리지 않음.
추후 환경 종속 감쇠(벽·실내·지형)는 별도 구현 필요 (현재 단순 거리 기반).
트리거 결과 청각 임계 초과 소음 발생 (몬스터별 차등) Unaware → Alert시야 콘 안에 캐릭터 등장 Unaware/Alert → Aware강한 자극 (피격·폭발 등) Unaware/Alert → Aware 직접 전환시야·청각 모두 일정 시간 부재 Aware → Alert → Return → Unaware
상세 매트릭스는 몬스터 AI §2 참조.
이동 모드 소음 강도 걷기 기본 ×30% 일반 이동 기본 ×100% 질주 기본 ×150%
공격 : 무기 카테고리·콤보 단계별 소음 정의 (밸런싱 영역).
막기 : 방패 사용 시 추가 소음 — 미정.
구르기 : 모션 종속 — 미정.
아이템 사용 : 카테고리·이름별 정의.
환경 상호작용 : 상자·문 열기 등 — 미정.
각 항목의 정확한 dB 값은 시트화 예정. 현재는 코드 상수와 ScriptableObject로 운영.
▶ 걷기 접근과 시야 회피
플레이어가 경비 몬스터 3명이 지키는 구역에 진입한다. 각도 120도, 수신 범위는 넓다.
달리면 질주 150% 소음 — 30dB 임계를 넘어 Alert가 뜬다. 걷기로 전환: 30% 소음으로 임계 미달.
하지만 한 명의 시야 콘 정면에서 움직이면 걷기여도 시야 채널이 독립적으로 반응한다.
시야 120도 밖 후방에서 접근 + 걷기 30% 소음 조합 — 두 채널을 모두 피해 뒤잡 위치에 도달한다.
공격 시 무기 소음이 발생해 나머지 몬스터에게 전달된다. 처치 속도가 스텔스 유지 여부를 결정한다.
시스템 연결 지점 몬스터 AI 인지 전환 트리거 (Alert·Aware 전이). 전투 공격·이동·막기의 소음 발생원. 캐릭터 스테이터스 auditoryPerception·visualPerception·Sensitive.맵 모듈 환경 종속 감쇠 (추후), 모듈별 청각 환경.
영역 시트 / 위치 시야 거리·각도 (몬스터별) 몬스터 마스터 / 인스턴스 데이터 (위치 미확정) 청각 인지 거리 Stat.auditoryPerception (캐릭터 스탯)청각 임계 (30dB) 고정 상수 (시트 미관리) 소음 강도 (행동·아이템별) NoiseEmitter 인스턴스 / ScriptableObject 발자국 소음 배율 (코드 상수 — 시트화 예정)
근접 3m 자동 인지 — Sight 외 별도 로직 존재 여부 재확인 필요 (아마 있음).
Sensitive 스테이터스가 auditoryPerception 외에 visualPerception에도 영향을 주는 정확한 산식.
환경 종속 청각 감쇠(벽·지형·실내)의 도입 시점.
청각이 방향성을 가지는지 (단순 거리 vs 입체 음향).
시야 라인 오브스트럭션 — 미구현, 추후 구현 필요.
소음 발생원의 noisePower 동적 조정 케이스 (은신 아이템 등).