摄像机区域的架构改动

This commit is contained in:
2026-05-15 14:47:24 +08:00
parent 1b37297585
commit f264329751
3591 changed files with 1687228 additions and 446503 deletions

View File

@@ -0,0 +1,91 @@
using System;
using UnityEngine;
using Animancer;
using BaseGames.Combat;
using BaseGames.Feedback;
namespace BaseGames.Player
{
/// <summary>
/// 武器数据 SO纯数据不含 Prefab 引用)。
/// 每个攻击方向对应一个 DamageSourceSO 和 ClipTransition。
/// HitBox 直接挂载在 Player Prefab 上(架构 05_PlayerModule §7
/// </summary>
[CreateAssetMenu(menuName = "BaseGames/Player/Weapon")]
public class WeaponSO : ScriptableObject
{
[Header("基础信息")]
public string weaponId; // 全局唯一 ID如 "Weapon_SkyBlade"
public string displayName; // 显示名,如 "天裂刃"
public Sprite icon;
public WeaponType weaponType;
[Header("连击动画Animancer ClipTransition")]
public ClipTransition attack1Clip;
public ClipTransition attack2Clip;
public ClipTransition attack3Clip;
public ClipTransition airAttackClip;
public ClipTransition upAttackClip;
public ClipTransition downAttackClip;
[Header("伤害来源(每段独立 DamageSourceSO")]
public DamageSourceSO attack1Source;
public DamageSourceSO attack2Source;
public DamageSourceSO attack3Source;
public DamageSourceSO airAttackSource;
public DamageSourceSO upAttackSource;
public DamageSourceSO downAttackSource;
[Header("HitBox Prefab")]
[Tooltip("武器专属 HitBox Prefab内含 WeaponHitBoxInstance。\nWeaponManager 在切换武器时实例化于 [WeaponSocket] \n命名规范Assets/Prefabs/Weapons/WPN_{weaponId}_HitBox.prefab")]
public GameObject hitBoxPrefab;
[Header("武器特效")]
public WeaponVFXConfig vfxConfig;
[Header("战斗参数")]
[Tooltip("命中确认时增加的灵力值(覆盖 PlayerCombat 默认值 10")]
[Min(0)]
public int soulPowerGain = 10;
// ── 方向查询 ──────────────────────────────────────────────────────────
public DamageSourceSO GetSourceByDir(AttackDirection dir) => dir switch
{
AttackDirection.Ground => attack1Source,
AttackDirection.Up => upAttackSource,
AttackDirection.Down => downAttackSource,
AttackDirection.Air => airAttackSource,
_ => attack1Source,
};
public ClipTransition GetClipByCombo(int comboIndex) => comboIndex switch
{
0 => attack1Clip,
1 => attack2Clip,
2 => attack3Clip,
_ => attack1Clip,
};
}
// ── 武器类型枚举(架构 05 §7──────────────────────────────────────────────
public enum WeaponType
{
SkyBlade, // 天魂:裂空刃(高频轻击)
EarthHammer, // 地魂:地震锤(低频重击,范围大)
LifeScythe, // 命魂:命镰(穿透,直线斩)
Custom, // 护符替换或未来扩展武器
}
// ── 武器特效配置([Serializable] 内嵌,架构 05 §7────────────────────────
[Serializable]
public class WeaponVFXConfig
{
[Tooltip("切换到此武器时播放的特效预设 ID对应 IFeedbackPlayer.TriggerPreset")]
public string onEquipPresetId;
[Tooltip("武器挥斩拖尾 Prefabnull = 不显示拖尾)")]
public GameObject weaponTrailPrefab;
public Color trailColor = Color.white;
}
}