Files
zeling_v2/Assets/_Game/Scripts/Enemies/EnemyStatsSO.cs
T

57 lines
2.1 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using System;
using UnityEngine;
namespace BaseGames.Enemies
{
/// <summary>
/// 受击分级配置(KnockUp 击飞门槛 & 飞行参数)。
/// 挂载在 EnemyStatsSO.HitTiers 中。
/// </summary>
[Serializable]
public struct HitTierConfig
{
[Tooltip("击飞(KnockUp)触发伤害阈值;需同时设置 DamageFlags.Launch0 = 仅依赖 Launch 标志")]
[Min(0)] public int launchThreshold;
[Tooltip("击飞纵向冲量")]
[Min(0f)] public float launchUpForce;
[Tooltip("击飞横向冲量(沿受击反方向)")]
[Min(0f)] public float launchHorzForce;
[Tooltip("无 KnockUp 动画时的状态持续时长(s")]
[Min(0f)] public float knockUpDuration;
}
/// <summary>
/// 敌人属性配置 SO(架构 07_EnemyModule §2)。
/// </summary>
[CreateAssetMenu(menuName = "BaseGames/Enemies/EnemyStats")]
public class EnemyStatsSO : ScriptableObject
{
[Header("生命")]
[Min(1)] public int MaxHP = 50;
[Header("防御")]
[Min(0)] public int Defense = 0;
[Header("移动")]
[Min(0f)] public float WalkSpeed = 2f;
[Min(0f)] public float RunSpeed = 4f;
[Header("战斗")]
[Min(0f)] public float AttackCooldown = 1f;
[Header("追击 & AI 阶段")]
[Tooltip("是否有警觉状态:勾选=未发现态进入视野先进警觉(朝向+警觉动画)再追击;不勾选=进入追逐感知直接追击")]
public bool HasAlertState = true;
[Tooltip("最大追击距离(m);超出后放弃追击切换搜查阶段")]
[Min(0f)] public float MaxChaseDistance = 15f;
[Tooltip("视线丢失判定超时(s);超过此时长无视线则切换搜查")]
[Min(0f)] public float LoseLinkTimeout = 2f;
[Tooltip("归位到达判定半径(m")]
[Min(0.01f)] public float HomeRadius = 0.5f;
[Header("受击分级")]
[Tooltip("Stagger / KnockUp 伤害阈值及击飞参数")]
public HitTierConfig HitTiers;
}
}