feat(BT12-Dev): A08 캐스팅 제거·Player spawn·가장 가까운 적 방향 발사 (PD 지시 2026-05-14)

작업 1 — 캐스팅 이펙트 제거:
- A08.asset OffsetDistance.x 1.5 → 0 (Player 위치 spawn)
- A08.asset CastFxPrefab null

작업 2 — 가장 가까운 적 방향 발사:
- ActiveSkillData.TargetEnemyOnFire (bool) 신규 필드
- ProjectileSpawner.Trigger — TargetEnemyOnFire=true 시 FindObjectsByType<EnemyController> 영역 nearest 검출·facing = (enemyPos - playerPos).normalized
- 적 0명 시 PlayerController.Facing fallback (기존 정합)
- A08.asset TargetEnemyOnFire=1

벽·발판 관통 X — Projectile.Update 영역 Layer 0·16 OverlapPoint 영역 영역 영역 정합 (변경 X).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
깃 관리자 2026-05-14 00:07:25 +09:00
parent 2ee5084230
commit 55ee4f390b
3 changed files with 29 additions and 3 deletions

View File

@ -28,7 +28,7 @@ MonoBehaviour:
BaseCooldown: 0.8 BaseCooldown: 0.8
BaseDamage: 2 BaseDamage: 2
HitboxSize: {x: 1.5, y: 0.6} HitboxSize: {x: 1.5, y: 0.6}
OffsetDistance: {x: 1.5, y: 0} OffsetDistance: {x: 0, y: 0}
Trajectory: 0 Trajectory: 0
MinionPrefab: {fileID: 0} MinionPrefab: {fileID: 0}
ChainCount: 0 ChainCount: 0
@ -54,9 +54,9 @@ MonoBehaviour:
OnHitFxPrefab: {fileID: 7053558978182834975, guid: aaba98a2ef6fecc46be2d3f1d41f9c75, OnHitFxPrefab: {fileID: 7053558978182834975, guid: aaba98a2ef6fecc46be2d3f1d41f9c75,
type: 3} type: 3}
ExtraHitFxPrefab: {fileID: 0} ExtraHitFxPrefab: {fileID: 0}
CastFxPrefab: {fileID: 9207792929607053519, guid: cab9ba2d706d3c04dab2b559425bac6a, CastFxPrefab: {fileID: 0}
type: 3}
ProjectileAngleOffset: 180 ProjectileAngleOffset: 180
TargetEnemyOnFire: 1
OnDotFxPrefab: {fileID: 0} OnDotFxPrefab: {fileID: 0}
DotDamageMultiplier: 0.25 DotDamageMultiplier: 0.25
ProjectileFxScale: 1 ProjectileFxScale: 1

View File

@ -115,6 +115,10 @@ namespace EerieVillage.Skills
[Range(-360f, 360f)] [Range(-360f, 360f)]
public float ProjectileAngleOffset = 0f; public float ProjectileAngleOffset = 0f;
// PD 지시 2026-05-14 — 발사 시점 가장 가까운 적 방향 영역 자동 조준 (예: A08 저주의 화살)
[Tooltip("true 시 발사 시점 가장 가까운 적 위치 방향으로 발사. 적 0명 시 PlayerController.Facing fallback.")]
public bool TargetEnemyOnFire = false;
[Tooltip("DoT 적용 시 적 자식으로 Instantiate 되는 ParticleSystem prefab")] [Tooltip("DoT 적용 시 적 자식으로 Instantiate 되는 ParticleSystem prefab")]
public GameObject OnDotFxPrefab; public GameObject OnDotFxPrefab;

View File

@ -28,6 +28,28 @@ namespace EerieVillage.Skills.Effectors
// PD 지시 2026-05-13 — 게임 시작 시 Player.Facing=(0,0) 영역 fallback (정지·잔존 투사체 차단) // PD 지시 2026-05-13 — 게임 시작 시 Player.Facing=(0,0) 영역 fallback (정지·잔존 투사체 차단)
if (facing.sqrMagnitude < 0.01f) facing = Vector2.right; if (facing.sqrMagnitude < 0.01f) facing = Vector2.right;
// PD 지시 2026-05-14 — TargetEnemyOnFire 영역 가장 가까운 적 방향 영역 발사 (A08 저주의 화살 등)
if (data.TargetEnemyOnFire)
{
Vector2 playerPos2 = playerTransform.position;
EnemyController nearest = null;
float minDist = float.MaxValue;
var enemies = Object.FindObjectsByType<EnemyController>(FindObjectsSortMode.None);
foreach (var e in enemies)
{
if (e == null) continue;
var h = e.GetComponent<Health>();
if (h == null || !h.IsAlive) continue;
float d = Vector2.Distance(playerPos2, e.transform.position);
if (d < minDist) { minDist = d; nearest = e; }
}
if (nearest != null)
{
Vector2 toEnemy = (Vector2)nearest.transform.position - playerPos2;
if (toEnemy.sqrMagnitude > 0.01f) facing = toEnemy.normalized;
}
}
// PD 정합 2026-05-13 — OffsetDistance.x = facing 방향 거리·OffsetDistance.y = 직각 거리·OffsetXY = 이펙트 절대 // PD 정합 2026-05-13 — OffsetDistance.x = facing 방향 거리·OffsetDistance.y = 직각 거리·OffsetXY = 이펙트 절대
Vector2 perpDir = new Vector2(-facing.y, facing.x); Vector2 perpDir = new Vector2(-facing.y, facing.x);
Vector2 spawnPos = (Vector2)playerTransform.position Vector2 spawnPos = (Vector2)playerTransform.position