스킬 시스템 구현

- 애니메이션 이벤트 기반 스킬 시스템 추가
  - SkillData: 스킬 데이터 (클립, 쿨타임, 효과 목록)
  - SkillController: 스킬 실행 및 애니메이션 제어
  - AnimatorOverrideController로 단일 State에서 다양한 스킬 재생

- 스킬 효과 시스템
  - DamageEffect, HealEffect, BuffEffect
  - KnockbackEffect, SoundEffect, SpawnEffect
  - 범위 공격 및 팀 구분 지원

- Team 컴포넌트로 아군/적 구분

- 스킬 중 이동 제한
  - IsPlayingAnimation으로 애니메이션 종료까지 이동 불가
  - OnSkillEnd 호출 시 다음 스킬 시전 가능

- 입력 시스템에 스킬 슬롯 6개 추가

- 애니메이션 에셋 추가 및 정리
  - AnimationSwordCombat 패키지 추가 (검 공격 애니메이션)
  - PlayerAnimationController에 Skill 상태 추가
  - External_Used 폴더 구조 정리

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-10 12:08:52 +09:00
parent 86903a09f0
commit eff23471d7
719 changed files with 485114 additions and 756 deletions

View File

@@ -2,6 +2,7 @@ using UnityEngine;
using UnityEngine.InputSystem;
using Unity.Netcode;
using Colosseum.Network;
using Colosseum.Skills;
namespace Colosseum.Player
{
@@ -19,6 +20,9 @@ namespace Colosseum.Player
[Header("Jump Settings")]
[SerializeField] private float jumpForce = 5f;
[Header("References")]
[SerializeField] private SkillController skillController;
private CharacterController characterController;
private Vector3 velocity;
private Vector2 moveInput;
@@ -54,6 +58,12 @@ namespace Colosseum.Player
characterController = GetComponent<CharacterController>();
// SkillController 참조
if (skillController == null)
{
skillController = GetComponent<SkillController>();
}
// 스폰 포인트에서 위치 설정
SetSpawnPosition();
@@ -164,6 +174,14 @@ namespace Colosseum.Player
{
if (characterController == null) return;
// 스킬 애니메이션 재생 중에는 이동 불가
if (skillController != null && skillController.IsPlayingAnimation)
{
// 중력만 적용
characterController.Move(velocity * Time.deltaTime);
return;
}
// 이동 방향 계산 (카메라 기준)
Vector3 moveDirection = new Vector3(moveInput.x, 0f, moveInput.y);
moveDirection = TransformDirectionByCamera(moveDirection);