Files
Colosseum/Assets/Scripts/Skills/SkillData.cs
dal4segno 680aacf580 스킬 시스템에 루트 모션 지원 추가
- SkillData: useRootMotion, ignoreRootMotionY 설정 추가
- SkillController: 루트 모션 관련 프로퍼티 노출
- PlayerMovement: OnAnimatorMove로 스킬 애니메이션의 이동/회전 데이터 적용
- Y축 무시 옵션으로 중력 및 충돌 처리 유지 가능

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 12:34:37 +09:00

51 lines
2.0 KiB
C#

using UnityEngine;
using System.Collections.Generic;
namespace Colosseum.Skills
{
/// <summary>
/// 스킬 데이터. 스킬의 기본 정보와 효과 목록을 관리합니다.
/// </summary>
[CreateAssetMenu(fileName = "NewSkill", menuName = "Colosseum/Skill")]
public class SkillData : ScriptableObject
{
[Header("기본 정보")]
[SerializeField] private string skillName;
[TextArea(2, 4)]
[SerializeField] private string description;
[SerializeField] private Sprite icon;
[Header("애니메이션")]
[Tooltip("기본 Animator Controller의 'Skill' 상태에 덮어씌워질 클립")]
[SerializeField] private AnimationClip skillClip;
[Tooltip("종료 애니메이션 (선택)")]
[SerializeField] private AnimationClip endClip;
[Header("루트 모션")]
[Tooltip("애니메이션의 이동/회전 데이터를 캐릭터에 적용")]
[SerializeField] private bool useRootMotion = false;
[Tooltip("루트 모션 적용 시 Y축 이동 무시 (중력과 충돌)")]
[SerializeField] private bool ignoreRootMotionY = true;
[Header("쿨타임 & 비용")]
[Min(0f)] [SerializeField] private float cooldown = 1f;
[Min(0f)] [SerializeField] private float manaCost = 0f;
[Header("효과 목록")]
[Tooltip("애니메이션 이벤트 OnEffect(index)로 발동. 리스트 순서 = 이벤트 인덱스")]
[SerializeField] private List<SkillEffect> effects = new List<SkillEffect>();
// Properties
public string SkillName => skillName;
public string Description => description;
public Sprite Icon => icon;
public AnimationClip SkillClip => skillClip;
public AnimationClip EndClip => endClip;
public float Cooldown => cooldown;
public float ManaCost => manaCost;
public bool UseRootMotion => useRootMotion;
public bool IgnoreRootMotionY => ignoreRootMotionY;
public IReadOnlyList<SkillEffect> Effects => effects;
}
}