refactor(enemy): 删除 EnemyStatsSO 死字段(感知/击退/攻击等,已迁 sensor槽/DamageSourceSO)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-10 13:43:51 +08:00
co-authored by Claude Opus 4.8
parent d718b99685
commit f7554b1a65
4 changed files with 0 additions and 51 deletions
@@ -166,8 +166,6 @@ namespace BaseGames.Editor.Modules
SkillModule.AddChip(card, "HP", s.MaxHP.ToString()); SkillModule.AddChip(card, "HP", s.MaxHP.ToString());
SkillModule.AddChip(card, "防御", s.Defense.ToString()); SkillModule.AddChip(card, "防御", s.Defense.ToString());
SkillModule.AddChip(card, "移速", $"{s.WalkSpeed}/{s.RunSpeed}"); SkillModule.AddChip(card, "移速", $"{s.WalkSpeed}/{s.RunSpeed}");
SkillModule.AddChip(card, "攻击", s.AttackDamage.ToString());
SkillModule.AddChip(card, "感知", $"{s.DetectRange}m");
return card; return card;
} }
-23
View File
@@ -778,29 +778,6 @@ namespace BaseGames.Enemies
$"[{(_brain != null ? _brain.CurrentStateName : "-")}] {_currentState}"); $"[{(_brain != null ? _brain.CurrentStateName : "-")}] {_currentState}");
} }
// ── 运行时:LOS 连线 ────────────────────────────────────────
if (!Application.isPlaying || _playerTransform == null) return;
float drawDetectRange = _sensorHub != null
? _sensorHub.GetSensorRadius(Perception.SensorSlotNames.Aggro)
: -1f;
Vector3 eyeWorld = transform.position + new Vector3(_statsSO.EyeOffset.x, _statsSO.EyeOffset.y, 0f);
Vector3 playerPos = _playerTransform.position;
float sqrDist = (playerPos - transform.position).sqrMagnitude;
bool inRange = drawDetectRange >= 0f && sqrDist <= drawDetectRange * drawDetectRange;
// 眼睛位置小圆点(金黄)
Gizmos.color = new Color(1f, 0.9f, 0.2f, 0.85f);
Gizmos.DrawWireSphere(eyeWorld, 0.07f);
if (inRange || HasLineOfSight)
{
Gizmos.color = HasLineOfSight
? new Color(1f, 0.5f, 0f, 0.85f)
: new Color(0.6f, 0.6f, 0.6f, 0.25f);
Gizmos.DrawLine(eyeWorld, playerPos);
}
#endif #endif
} }
@@ -27,8 +27,6 @@ namespace BaseGames.Enemies
// ── AI 追击配置(透传 SO)────────────────────────────────────────── // ── AI 追击配置(透传 SO)──────────────────────────────────────────
public float MaxChaseDistance => _config?.MaxChaseDistance ?? 15f; public float MaxChaseDistance => _config?.MaxChaseDistance ?? 15f;
public float LoseLinkTimeout => _config?.LoseLinkTimeout ?? 2f; public float LoseLinkTimeout => _config?.LoseLinkTimeout ?? 2f;
public float AlertDuration => _config?.AlertDuration ?? 0.6f;
public float InvestigateDuration => _config?.InvestigateDuration ?? 3f;
public float HomeRadius => _config?.HomeRadius ?? 0.5f; public float HomeRadius => _config?.HomeRadius ?? 0.5f;
/// <summary> /// <summary>
@@ -10,8 +10,6 @@ namespace BaseGames.Enemies
[Serializable] [Serializable]
public struct HitTierConfig public struct HitTierConfig
{ {
[Tooltip("重击(Stagger)触发伤害阈值;伤害 &gt;= 此值进入 Stagger")]
[Min(0)] public int heavyHitThreshold;
[Tooltip("击飞(KnockUp)触发伤害阈值;需同时设置 DamageFlags.Launch0 = 仅依赖 Launch 标志")] [Tooltip("击飞(KnockUp)触发伤害阈值;需同时设置 DamageFlags.Launch0 = 仅依赖 Launch 标志")]
[Min(0)] public int launchThreshold; [Min(0)] public int launchThreshold;
[Tooltip("击飞纵向冲量")] [Tooltip("击飞纵向冲量")]
@@ -39,10 +37,7 @@ namespace BaseGames.Enemies
[Min(0f)] public float RunSpeed = 4f; [Min(0f)] public float RunSpeed = 4f;
[Header("战斗")] [Header("战斗")]
[Min(0)] public int AttackDamage = 10;
[Min(0f)] public float AttackRange = 1.5f;
[Min(0f)] public float AttackCooldown = 1f; [Min(0f)] public float AttackCooldown = 1f;
[Min(0f)] public float DetectRange = 6f;
[Header("追击 & AI 阶段")] [Header("追击 & AI 阶段")]
[Tooltip("是否有警觉状态:勾选=未发现态进入视野先进警觉(朝向+警觉动画)再追击;不勾选=进入追逐感知直接追击")] [Tooltip("是否有警觉状态:勾选=未发现态进入视野先进警觉(朝向+警觉动画)再追击;不勾选=进入追逐感知直接追击")]
@@ -51,32 +46,13 @@ namespace BaseGames.Enemies
[Min(0f)] public float MaxChaseDistance = 15f; [Min(0f)] public float MaxChaseDistance = 15f;
[Tooltip("视线丢失判定超时(s);超过此时长无视线则切换搜查")] [Tooltip("视线丢失判定超时(s);超过此时长无视线则切换搜查")]
[Min(0f)] public float LoseLinkTimeout = 2f; [Min(0f)] public float LoseLinkTimeout = 2f;
[Tooltip("Alert 阶段持续时长(s);短暂警觉动作后进入追击")]
[Min(0f)] public float AlertDuration = 0.6f;
[Tooltip("搜查最后可见位置后的等待时长(s)")]
[Min(0f)] public float InvestigateDuration = 3f;
[Tooltip("归位到达判定半径(m")] [Tooltip("归位到达判定半径(m")]
[Min(0.01f)] public float HomeRadius = 0.5f; [Min(0.01f)] public float HomeRadius = 0.5f;
[Header("击退(作为来源时)")]
[Min(0f)] public float KnockbackForce = 5f;
[Min(0f)] public float HitStunDuration = 0.3f;
[Header("受击分级")] [Header("受击分级")]
[Tooltip("Stagger / KnockUp 伤害阈值及击飞参数")] [Tooltip("Stagger / KnockUp 伤害阈值及击飞参数")]
public HitTierConfig HitTiers; public HitTierConfig HitTiers;
[Header("视线检测(遗留配置,已迁移到 PhysicsPerceptionSystem 各 Slot 的 losBlockMask")]
[Tooltip("相对 transform.position 的眼睛偏移量")]
public Vector2 EyeOffset = new Vector2(0f, 0.8f);
[Tooltip("遮挡 LOS 的物理图层")]
public LayerMask LOSBlockingMask = 1; // Default layer
[Header("感知角度")]
[Tooltip("前向感知扇形半角(度)。0 = 关闭方向检查,按完整圆形感知")]
[Range(0f, 180f)]
public float DetectAngleDeg = 0f;
[Header("警戒传播(Group Alert")] [Header("警戒传播(Group Alert")]
[Tooltip("发现玩家时通知周围同伴进入 Alert 的半径(m);0 = 关闭")] [Tooltip("发现玩家时通知周围同伴进入 Alert 的半径(m);0 = 关闭")]
[Min(0f)] [Min(0f)]