feat: 서포트 스킬(힐/보호막/버프) 위협 생성 시스템 추가

- ThreatUtility: 공통 위협 생성 유틸리티 (OverlapSphere 기반 반경 내 적 탐색)
  - OverlapSphereNonAlloc 버퍼 32→256 확장으로 씬 콜라이더 누락 수정
  - 위협 배율 체인: SkillGem × ThreatController × Passive
- HealEffect: flatThreat + (actualHeal × threatPercent) 공식 적용
- ShieldEffect: flatThreat + (actualShield × threatPercent) 공식 적용
- AbnormalityEffect: flatThreat 고정 위협 생성
- EditMode 유닛 테스트 9/9 통과 (SupportThreatTests)
- 테스트 씬 UI 레이아웃 수정 사항 포함
This commit is contained in:
2026-03-28 17:05:57 +09:00
parent ba52518d65
commit a5e9b78098
14 changed files with 415 additions and 73 deletions

View File

@@ -4943,9 +4943,9 @@ RectTransform:
m_Children: []
m_Father: {fileID: 1269404371}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 200, y: -150}
m_SizeDelta: {x: 400, y: 100}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &972424301
@@ -10250,9 +10250,9 @@ RectTransform:
m_Children: []
m_Father: {fileID: 1269404371}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 200, y: -50}
m_SizeDelta: {x: 400, y: 100}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1873670929
@@ -12497,19 +12497,19 @@ PrefabInstance:
m_Modifications:
- target: {fileID: 37952942597124734, guid: 49cc51b51d25b2e4f85ceec039fb545c, type: 3}
propertyPath: m_AnchorMax.y
value: 0
value: 1
objectReference: {fileID: 0}
- target: {fileID: 37952942597124734, guid: 49cc51b51d25b2e4f85ceec039fb545c, type: 3}
propertyPath: m_AnchorMin.y
value: 0
value: 1
objectReference: {fileID: 0}
- target: {fileID: 37952942597124734, guid: 49cc51b51d25b2e4f85ceec039fb545c, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
value: 30
objectReference: {fileID: 0}
- target: {fileID: 37952942597124734, guid: 49cc51b51d25b2e4f85ceec039fb545c, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
value: -12
objectReference: {fileID: 0}
- target: {fileID: 190570274300989800, guid: 49cc51b51d25b2e4f85ceec039fb545c, type: 3}
propertyPath: m_sharedMaterial
@@ -12533,19 +12533,19 @@ PrefabInstance:
objectReference: {fileID: 2399985188671511309, guid: ef44cbe516f6f9f418375e5b2b73ad8d, type: 2}
- target: {fileID: 1133562530543291889, guid: 49cc51b51d25b2e4f85ceec039fb545c, type: 3}
propertyPath: m_AnchorMax.y
value: 0
value: 1
objectReference: {fileID: 0}
- target: {fileID: 1133562530543291889, guid: 49cc51b51d25b2e4f85ceec039fb545c, type: 3}
propertyPath: m_AnchorMin.y
value: 0
value: 1
objectReference: {fileID: 0}
- target: {fileID: 1133562530543291889, guid: 49cc51b51d25b2e4f85ceec039fb545c, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
value: 12
objectReference: {fileID: 0}
- target: {fileID: 1133562530543291889, guid: 49cc51b51d25b2e4f85ceec039fb545c, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
value: -12
objectReference: {fileID: 0}
- target: {fileID: 1221067101658275850, guid: 49cc51b51d25b2e4f85ceec039fb545c, type: 3}
propertyPath: m_Pivot.x
@@ -12573,7 +12573,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 1221067101658275850, guid: 49cc51b51d25b2e4f85ceec039fb545c, type: 3}
propertyPath: m_SizeDelta.x
value: 0
value: 600
objectReference: {fileID: 0}
- target: {fileID: 1221067101658275850, guid: 49cc51b51d25b2e4f85ceec039fb545c, type: 3}
propertyPath: m_SizeDelta.y
@@ -12637,83 +12637,83 @@ PrefabInstance:
objectReference: {fileID: 2399985188671511309, guid: ef44cbe516f6f9f418375e5b2b73ad8d, type: 2}
- target: {fileID: 2379057061630145361, guid: 49cc51b51d25b2e4f85ceec039fb545c, type: 3}
propertyPath: m_AnchorMax.y
value: 0
value: 1
objectReference: {fileID: 0}
- target: {fileID: 2379057061630145361, guid: 49cc51b51d25b2e4f85ceec039fb545c, type: 3}
propertyPath: m_AnchorMin.y
value: 0
value: 1
objectReference: {fileID: 0}
- target: {fileID: 2379057061630145361, guid: 49cc51b51d25b2e4f85ceec039fb545c, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
value: 210
objectReference: {fileID: 0}
- target: {fileID: 2379057061630145361, guid: 49cc51b51d25b2e4f85ceec039fb545c, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
value: -80
objectReference: {fileID: 0}
- target: {fileID: 3523350566323011114, guid: 49cc51b51d25b2e4f85ceec039fb545c, type: 3}
propertyPath: m_AnchorMax.y
value: 0
value: 1
objectReference: {fileID: 0}
- target: {fileID: 3523350566323011114, guid: 49cc51b51d25b2e4f85ceec039fb545c, type: 3}
propertyPath: m_AnchorMin.y
value: 0
value: 1
objectReference: {fileID: 0}
- target: {fileID: 3523350566323011114, guid: 49cc51b51d25b2e4f85ceec039fb545c, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
value: 300
objectReference: {fileID: 0}
- target: {fileID: 3523350566323011114, guid: 49cc51b51d25b2e4f85ceec039fb545c, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
value: -80
objectReference: {fileID: 0}
- target: {fileID: 3939708747385511549, guid: 49cc51b51d25b2e4f85ceec039fb545c, type: 3}
propertyPath: m_AnchorMax.y
value: 0
value: 1
objectReference: {fileID: 0}
- target: {fileID: 3939708747385511549, guid: 49cc51b51d25b2e4f85ceec039fb545c, type: 3}
propertyPath: m_AnchorMin.y
value: 0
value: 1
objectReference: {fileID: 0}
- target: {fileID: 3939708747385511549, guid: 49cc51b51d25b2e4f85ceec039fb545c, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
value: 390
objectReference: {fileID: 0}
- target: {fileID: 3939708747385511549, guid: 49cc51b51d25b2e4f85ceec039fb545c, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
value: -80
objectReference: {fileID: 0}
- target: {fileID: 4181238112051942263, guid: 49cc51b51d25b2e4f85ceec039fb545c, type: 3}
propertyPath: m_AnchorMax.y
value: 0
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4181238112051942263, guid: 49cc51b51d25b2e4f85ceec039fb545c, type: 3}
propertyPath: m_AnchorMin.y
value: 0
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4181238112051942263, guid: 49cc51b51d25b2e4f85ceec039fb545c, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
value: 120
objectReference: {fileID: 0}
- target: {fileID: 4181238112051942263, guid: 49cc51b51d25b2e4f85ceec039fb545c, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
value: -80
objectReference: {fileID: 0}
- target: {fileID: 4523923546265445185, guid: 49cc51b51d25b2e4f85ceec039fb545c, type: 3}
propertyPath: m_AnchorMax.y
value: 0
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4523923546265445185, guid: 49cc51b51d25b2e4f85ceec039fb545c, type: 3}
propertyPath: m_AnchorMin.y
value: 0
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4523923546265445185, guid: 49cc51b51d25b2e4f85ceec039fb545c, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
value: 480
objectReference: {fileID: 0}
- target: {fileID: 4523923546265445185, guid: 49cc51b51d25b2e4f85ceec039fb545c, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
value: -80
objectReference: {fileID: 0}
- target: {fileID: 4573149184624272161, guid: 49cc51b51d25b2e4f85ceec039fb545c, type: 3}
propertyPath: m_sharedMaterial
@@ -12729,19 +12729,19 @@ PrefabInstance:
objectReference: {fileID: 2399985188671511309, guid: ef44cbe516f6f9f418375e5b2b73ad8d, type: 2}
- target: {fileID: 6101051669567451606, guid: 49cc51b51d25b2e4f85ceec039fb545c, type: 3}
propertyPath: m_AnchorMax.y
value: 0
value: 1
objectReference: {fileID: 0}
- target: {fileID: 6101051669567451606, guid: 49cc51b51d25b2e4f85ceec039fb545c, type: 3}
propertyPath: m_AnchorMin.y
value: 0
value: 1
objectReference: {fileID: 0}
- target: {fileID: 6101051669567451606, guid: 49cc51b51d25b2e4f85ceec039fb545c, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
value: 570
objectReference: {fileID: 0}
- target: {fileID: 6101051669567451606, guid: 49cc51b51d25b2e4f85ceec039fb545c, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
value: -80
objectReference: {fileID: 0}
- target: {fileID: 6130640029172101558, guid: 49cc51b51d25b2e4f85ceec039fb545c, type: 3}
propertyPath: m_sharedMaterial
@@ -12749,19 +12749,19 @@ PrefabInstance:
objectReference: {fileID: 2399985188671511309, guid: ef44cbe516f6f9f418375e5b2b73ad8d, type: 2}
- target: {fileID: 6345035962906402317, guid: 49cc51b51d25b2e4f85ceec039fb545c, type: 3}
propertyPath: m_AnchorMax.y
value: 0
value: 1
objectReference: {fileID: 0}
- target: {fileID: 6345035962906402317, guid: 49cc51b51d25b2e4f85ceec039fb545c, type: 3}
propertyPath: m_AnchorMin.y
value: 0
value: 1
objectReference: {fileID: 0}
- target: {fileID: 6345035962906402317, guid: 49cc51b51d25b2e4f85ceec039fb545c, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
value: 30
objectReference: {fileID: 0}
- target: {fileID: 6345035962906402317, guid: 49cc51b51d25b2e4f85ceec039fb545c, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
value: -80
objectReference: {fileID: 0}
- target: {fileID: 6573329606355463389, guid: 49cc51b51d25b2e4f85ceec039fb545c, type: 3}
propertyPath: m_sharedMaterial
@@ -12789,19 +12789,19 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 6996006525341314896, guid: 49cc51b51d25b2e4f85ceec039fb545c, type: 3}
propertyPath: m_AnchorMax.y
value: 0
value: 1
objectReference: {fileID: 0}
- target: {fileID: 6996006525341314896, guid: 49cc51b51d25b2e4f85ceec039fb545c, type: 3}
propertyPath: m_AnchorMin.y
value: 0
value: 1
objectReference: {fileID: 0}
- target: {fileID: 6996006525341314896, guid: 49cc51b51d25b2e4f85ceec039fb545c, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
value: 12
objectReference: {fileID: 0}
- target: {fileID: 6996006525341314896, guid: 49cc51b51d25b2e4f85ceec039fb545c, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
value: -12
objectReference: {fileID: 0}
- target: {fileID: 7080500501054768885, guid: 49cc51b51d25b2e4f85ceec039fb545c, type: 3}
propertyPath: m_sharedMaterial
@@ -12809,19 +12809,19 @@ PrefabInstance:
objectReference: {fileID: 2399985188671511309, guid: ef44cbe516f6f9f418375e5b2b73ad8d, type: 2}
- target: {fileID: 7338693974700040038, guid: 49cc51b51d25b2e4f85ceec039fb545c, type: 3}
propertyPath: m_AnchorMax.y
value: 0
value: 1
objectReference: {fileID: 0}
- target: {fileID: 7338693974700040038, guid: 49cc51b51d25b2e4f85ceec039fb545c, type: 3}
propertyPath: m_AnchorMin.y
value: 0
value: 1
objectReference: {fileID: 0}
- target: {fileID: 7338693974700040038, guid: 49cc51b51d25b2e4f85ceec039fb545c, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
value: 12
objectReference: {fileID: 0}
- target: {fileID: 7338693974700040038, guid: 49cc51b51d25b2e4f85ceec039fb545c, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
value: -12
objectReference: {fileID: 0}
- target: {fileID: 7777120333480524073, guid: 49cc51b51d25b2e4f85ceec039fb545c, type: 3}
propertyPath: skillSlots.Array.size
@@ -12853,19 +12853,19 @@ PrefabInstance:
objectReference: {fileID: 5155748580713623445}
- target: {fileID: 7779132291636019725, guid: 49cc51b51d25b2e4f85ceec039fb545c, type: 3}
propertyPath: m_AnchorMax.y
value: 0
value: 1
objectReference: {fileID: 0}
- target: {fileID: 7779132291636019725, guid: 49cc51b51d25b2e4f85ceec039fb545c, type: 3}
propertyPath: m_AnchorMin.y
value: 0
value: 1
objectReference: {fileID: 0}
- target: {fileID: 7779132291636019725, guid: 49cc51b51d25b2e4f85ceec039fb545c, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
value: 12
objectReference: {fileID: 0}
- target: {fileID: 7779132291636019725, guid: 49cc51b51d25b2e4f85ceec039fb545c, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
value: -12
objectReference: {fileID: 0}
- target: {fileID: 7784750563836883913, guid: 49cc51b51d25b2e4f85ceec039fb545c, type: 3}
propertyPath: m_sharedMaterial
@@ -12873,35 +12873,35 @@ PrefabInstance:
objectReference: {fileID: 2399985188671511309, guid: ef44cbe516f6f9f418375e5b2b73ad8d, type: 2}
- target: {fileID: 7907435898345579098, guid: 49cc51b51d25b2e4f85ceec039fb545c, type: 3}
propertyPath: m_AnchorMax.y
value: 0
value: 1
objectReference: {fileID: 0}
- target: {fileID: 7907435898345579098, guid: 49cc51b51d25b2e4f85ceec039fb545c, type: 3}
propertyPath: m_AnchorMin.y
value: 0
value: 1
objectReference: {fileID: 0}
- target: {fileID: 7907435898345579098, guid: 49cc51b51d25b2e4f85ceec039fb545c, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
value: 12
objectReference: {fileID: 0}
- target: {fileID: 7907435898345579098, guid: 49cc51b51d25b2e4f85ceec039fb545c, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
value: -12
objectReference: {fileID: 0}
- target: {fileID: 8796771405208194934, guid: 49cc51b51d25b2e4f85ceec039fb545c, type: 3}
propertyPath: m_AnchorMax.y
value: 0
value: 1
objectReference: {fileID: 0}
- target: {fileID: 8796771405208194934, guid: 49cc51b51d25b2e4f85ceec039fb545c, type: 3}
propertyPath: m_AnchorMin.y
value: 0
value: 1
objectReference: {fileID: 0}
- target: {fileID: 8796771405208194934, guid: 49cc51b51d25b2e4f85ceec039fb545c, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
value: 12
objectReference: {fileID: 0}
- target: {fileID: 8796771405208194934, guid: 49cc51b51d25b2e4f85ceec039fb545c, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
value: -12
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []