2026-05-20 총쏘기 이펙트

This commit is contained in:
2026-05-20 11:59:03 +09:00
parent 3769ff87bf
commit a0d04cf934
704 changed files with 37193 additions and 2 deletions

View File

@@ -811,6 +811,36 @@ private void ActivateAttackHitbox(ActionData data)
Vector2 sourcePosition = _rb != null ? _rb.position : (Vector2)transform.position;
_attackHitbox.Activate(data, localPosition, hitVelocity, sourcePosition, hitTargetPosition, data.CorrectHitTargetY, _groundLayer.value, _enemyLayer);
SpawnHitEffect(data);
}
// hit 발동 시점에 이펙트 프리팹 생성.
// 위치는 HitEffectOffset으로 별도 지정 (hit 영역 Offset과 독립).
// 페이싱에 맞춰 좌우 반전하고, 설정된 수명만큼만 유지.
private void SpawnHitEffect(ActionData data)
{
if (data.HitEffectPrefab == null) return;
Vector2 localPosition = GetAttackLocalPosition(data.HitEffectOffset);
Vector3 worldPosition = transform.TransformPoint(localPosition);
GameObject effect = Instantiate(data.HitEffectPrefab, worldPosition, Quaternion.identity);
// 캐릭터가 왼쪽을 보면 이펙트도 X 반전.
if (_spriteRenderer != null && _spriteRenderer.flipX)
{
Vector3 scale = effect.transform.localScale;
scale.x *= -1f;
effect.transform.localScale = scale;
}
// 플레이어 자식으로 붙이면 캐릭터 따라 움직임 (검광처럼 캐릭터에 붙는 이펙트).
if (data.HitEffectAttachToPlayer)
effect.transform.SetParent(transform);
// 0보다 크면 자동 파괴. 0이면 프리팹이 스스로 정리한다고 가정 (파티클 Stop Action 등).
if (data.HitEffectLifetime > 0f)
Destroy(effect, data.HitEffectLifetime);
}
private void EnsureAttackHitbox()