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:
parent
2ee5084230
commit
55ee4f390b
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue