feat: 채널링 빔 스킬 시스템 구현 및 PolygonParticleFX VFX 에셋 추가

- SkillData: 채널링 필드 추가 (지속시간, 틱 간격, 틱/종료 효과, VFX 프리팹, 마운트 경로, 크기 배율)
- SkillController: 채널링 상태 관리 (Start/Update/End), VFX 생성/파괴, 틱 효과 주기 발동, 버튼 해제로 중단
- SkillEffect: Beam(원통) 범위 판정 추가 (OverlapCapsule), 디버그 시각화
- PlayerSkillInput: 스킬 취소(canceled) 이벤트 구독 → 채널링 중단 통지
- SkillLoadoutEntry: 채널링 틱/종료 효과 수집 메서드 추가
- 스킬 데이터/이펙트/애니메이션/VFX 에셋 추가 (채널링 스킬용)
- PolygonParticleFX VFX 에셋 패키지 추가 (Materials, Models, Prefabs, Textures, Scenes)
This commit is contained in:
2026-04-03 13:50:26 +09:00
parent 40e3252901
commit bbb2903ee1
721 changed files with 2135642 additions and 1422 deletions

View File

@@ -396,6 +396,64 @@ namespace Colosseum.Skills
}
}
/// <summary>
/// 기반 스킬의 채널링 틱 효과를 수집합니다.
/// </summary>
public void CollectChannelTickEffects(List<SkillEffect> destination)
{
if (destination == null)
return;
if (baseSkill != null && baseSkill.ChannelTickEffects != null)
{
for (int i = 0; i < baseSkill.ChannelTickEffects.Count; i++)
{
SkillEffect effect = baseSkill.ChannelTickEffects[i];
if (effect != null)
destination.Add(effect);
}
}
if (socketedGems == null)
return;
for (int i = 0; i < socketedGems.Length; i++)
{
SkillGemData gem = socketedGems[i];
if (gem == null)
continue;
}
}
/// <summary>
/// 기반 스킬의 채널링 종료 효과를 수집합니다.
/// </summary>
public void CollectChannelEndEffects(List<SkillEffect> destination)
{
if (destination == null)
return;
if (baseSkill != null && baseSkill.ChannelEndEffects != null)
{
for (int i = 0; i < baseSkill.ChannelEndEffects.Count; i++)
{
SkillEffect effect = baseSkill.ChannelEndEffects[i];
if (effect != null)
destination.Add(effect);
}
}
if (socketedGems == null)
return;
for (int i = 0; i < socketedGems.Length; i++)
{
SkillGemData gem = socketedGems[i];
if (gem == null)
continue;
}
}
private static void AddTriggeredEffect(Dictionary<int, List<SkillEffect>> destination, int triggerIndex, SkillEffect effect)
{
if (!destination.TryGetValue(triggerIndex, out List<SkillEffect> effectList))