진행중인 사항 - InputManager + .inputactions: WeaponSlot1/2/3 액션 추가, 키 1/2/3 매핑 PlayerController 통합: Player에 PlayerWeaponInventory 컴포넌트 자동 부착 OnWeaponChanged 구독 → idle/walk State 이름 동적 교체 OnPunchInput 분기: 무장 시 weapon.AttackRootNode 사용 WeaponSlot 입력 핸들러 3개 추가 (EquipUnarmed / EquipSlot(0) / EquipSlot(1))
40 lines
1.7 KiB
C#
40 lines
1.7 KiB
C#
using UnityEngine;
|
|
|
|
// ============================================================================
|
|
// WeaponType
|
|
// ----------------------------------------------------------------------------
|
|
// 무기 분류. 향후 다른 시스템(예: 데미지 면역, 약점)에서 분기용으로 사용.
|
|
// ============================================================================
|
|
public enum WeaponType
|
|
{
|
|
Sword,
|
|
Gun
|
|
}
|
|
|
|
// ============================================================================
|
|
// WeaponData
|
|
// ----------------------------------------------------------------------------
|
|
// 무기 한 종류의 정의를 담은 ScriptableObject.
|
|
// .asset 파일로 만들어 적의 드랍 슬롯과 픽업 프리팹에 할당.
|
|
//
|
|
// 효과:
|
|
// - 장착 시 _idleAnimationState / _walkAnimationState를 이 무기 버전으로 교체
|
|
// - Punch 입력 시 _punchRootNode 대신 AttackRootNode 사용
|
|
// ============================================================================
|
|
[CreateAssetMenu(fileName = "WeaponData", menuName = "Combat/WeaponData")]
|
|
public class WeaponData : ScriptableObject
|
|
{
|
|
public string DisplayName; // UI 표시/디버그용 이름
|
|
public WeaponType Type = WeaponType.Sword; // 분류 (시스템 분기용)
|
|
|
|
[Header("Equipped Animations")]
|
|
public string IdleAnimationState; // 장착 시 idle 애니메이션 (예: "Idle_Sword")
|
|
public string WalkAnimationState; // 장착 시 walk 애니메이션 (예: "Walk_Sword")
|
|
|
|
[Header("Attack")]
|
|
public ComboNode AttackRootNode; // Punch 입력 시 사용할 콤보 root (단일 노드 가능)
|
|
|
|
[Header("Pickup Visual")]
|
|
public Sprite PickupSprite; // 월드에 떨어뜨려진 모습
|
|
}
|