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

@@ -150,6 +150,12 @@ namespace Colosseum.Player
inputActions.Player.Skill5.performed += OnSkill5Performed;
inputActions.Player.Skill6.performed += OnSkill6Performed;
inputActions.Player.Evade.performed += OnEvadePerformed;
inputActions.Player.Skill1.canceled += OnSkill1Canceled;
inputActions.Player.Skill2.canceled += OnSkill2Canceled;
inputActions.Player.Skill3.canceled += OnSkill3Canceled;
inputActions.Player.Skill4.canceled += OnSkill4Canceled;
inputActions.Player.Skill5.canceled += OnSkill5Canceled;
inputActions.Player.Skill6.canceled += OnSkill6Canceled;
}
SetGameplayInputEnabled(true);
@@ -377,6 +383,12 @@ namespace Colosseum.Player
{
if (inputActions != null)
{
inputActions.Player.Skill1.canceled -= OnSkill1Canceled;
inputActions.Player.Skill2.canceled -= OnSkill2Canceled;
inputActions.Player.Skill3.canceled -= OnSkill3Canceled;
inputActions.Player.Skill4.canceled -= OnSkill4Canceled;
inputActions.Player.Skill5.canceled -= OnSkill5Canceled;
inputActions.Player.Skill6.canceled -= OnSkill6Canceled;
inputActions.Player.Disable();
}
}
@@ -852,6 +864,24 @@ namespace Colosseum.Player
private void OnEvadePerformed(InputAction.CallbackContext context) => OnSkillInput(6);
private void OnSkill1Canceled(InputAction.CallbackContext context) => OnSkillCanceled();
private void OnSkill2Canceled(InputAction.CallbackContext context) => OnSkillCanceled();
private void OnSkill3Canceled(InputAction.CallbackContext context) => OnSkillCanceled();
private void OnSkill4Canceled(InputAction.CallbackContext context) => OnSkillCanceled();
private void OnSkill5Canceled(InputAction.CallbackContext context) => OnSkillCanceled();
private void OnSkill6Canceled(InputAction.CallbackContext context) => OnSkillCanceled();
/// <summary>
/// 스킬 버튼 해제 시 채널링 중단을 알립니다.
/// </summary>
private void OnSkillCanceled()
{
if (skillController != null && skillController.IsChannelingActive)
{
skillController.NotifyChannelHoldReleased();
}
}
private PlayerActionState GetOrCreateActionState()
{
var foundState = GetComponent<PlayerActionState>();