feat(BT12-Dev): RangeTier 5단계 + aspect fallback (PD 사정거리 영역)

This commit is contained in:
깃 관리자 2026-05-10 16:56:20 +09:00
parent 6a160d5f5f
commit e7e120feef
8 changed files with 19 additions and 8 deletions

View File

@ -44,3 +44,4 @@ MonoBehaviour:
IFrameDuration: 0
DebuffStackLimit: 0
FireProbability: 1
Range: 2

View File

@ -45,3 +45,4 @@ MonoBehaviour:
IFrameDuration: 0
DebuffStackLimit: 0
FireProbability: 1
Range: 3

View File

@ -44,3 +44,4 @@ MonoBehaviour:
IFrameDuration: 0
DebuffStackLimit: 0
FireProbability: 1
Range: 2

View File

@ -45,3 +45,4 @@ MonoBehaviour:
IFrameDuration: 0
DebuffStackLimit: 5
FireProbability: 1
Range: 1

View File

@ -44,3 +44,4 @@ MonoBehaviour:
IFrameDuration: 0
DebuffStackLimit: 0
FireProbability: 1
Range: 3

View File

@ -44,3 +44,4 @@ MonoBehaviour:
IFrameDuration: 0
DebuffStackLimit: 0
FireProbability: 1
Range: 4

View File

@ -79,8 +79,14 @@ namespace EerieVillage.Skills
[Tooltip("확률 판정 전용 (F 카테고리). 발동 확률 0~1")]
[Range(0f, 1f)]
public float FireProbability = 1.0f;
/// <summary>BT12-Dev 2026-05-10 PD — 사정거리 5단계 (Camera width 배수)</summary>
[Tooltip("사정거리 5단계 — Camera 가로 배수 (Short 0.2·MediumShort 0.5·Medium 0.667·MediumLong 1.0·Long 1.5)")]
public RangeTier Range = RangeTier.Medium;
}
public enum RangeTier { Short, MediumShort, Medium, MediumLong, Long }
/// <summary>
/// 액티브 스킬 카테고리 (A~F). BT12-Dev v1 §2-2 정합.
/// </summary>

View File

@ -43,18 +43,17 @@ namespace EerieVillage.Skills.Effectors
_spawnPosition = transform.position;
_spawnTime = Time.time;
// 최대 거리 = Camera 영역 영역 영역 × 1.5 (PD #1 명시)
// Camera ortho size 3.5·aspect 16:9 → height 7·width ~12.44 → maxRange ~18.66 unit
// BT12-Dev 2026-05-10 PD — 사정거리 5단계 (Camera 가로 배수)
float camWidth = 12.44f; // fallback (ortho size 3.5·16:9)
var cam = Camera.main;
if (cam != null && cam.orthographic)
{
float camWidth = cam.orthographicSize * 2f * cam.aspect;
_maxRange = camWidth * 1.5f;
}
else
{
_maxRange = 20f; // fallback
float aspect = (cam.aspect > 0.01f) ? cam.aspect : (16f / 9f);
camWidth = cam.orthographicSize * 2f * aspect;
}
float[] mults = { 0.2f, 0.5f, 0.667f, 1.0f, 1.5f };
int idx = Mathf.Clamp((int)_data.Range, 0, mults.Length - 1);
_maxRange = camWidth * mults[idx];
// Phase 2-B: 풀링 미도입 — Invoke 기반 자동 소멸 (거리 제한 영역 영역 영역 영역 영역 안전망)
Invoke(nameof(SelfDestruct), _lifetime);