摄像机区域的架构改动
This commit is contained in:
48
Assets/_Game/Scripts/Combat/SkillHitBoxInstance.cs
Normal file
48
Assets/_Game/Scripts/Combat/SkillHitBoxInstance.cs
Normal file
@@ -0,0 +1,48 @@
|
||||
using UnityEngine;
|
||||
using BaseGames.Combat;
|
||||
|
||||
namespace BaseGames.Combat
|
||||
{
|
||||
/// <summary>
|
||||
/// 技能 HitBox 实例(架构 09_ProgressionModule §9 SkillHitBoxInstance)。
|
||||
/// 挂载于技能 HitBox Prefab 根节点。
|
||||
/// 命名规范: Assets/Prefabs/Skills/SKL_{skillId}_HitBox.prefab
|
||||
///
|
||||
/// Prefab 内部层级示例(近战 AoE 技能):
|
||||
/// [SKL_SkySlash_HitBox]
|
||||
/// └── [HitBox] ← 扇形/圆形 PolygonCollider2D
|
||||
/// └── HitBox.cs
|
||||
/// </summary>
|
||||
public class SkillHitBoxInstance : MonoBehaviour
|
||||
{
|
||||
[SerializeField] private HitBox[] _hitBoxes; // 技能可有多个 HitBox(多段伤害)
|
||||
|
||||
public event System.Action<DamageInfo> OnHitConfirmed;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
foreach (var hb in _hitBoxes)
|
||||
{
|
||||
if (hb == null) continue;
|
||||
hb.OnHitConfirmed += info => OnHitConfirmed?.Invoke(info);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>激活所有 HitBox,传入伤害数据源和攻击者 Transform。</summary>
|
||||
public void Activate(DamageSourceSO source, Transform attacker)
|
||||
{
|
||||
foreach (var hb in _hitBoxes)
|
||||
hb?.Activate(source, attacker);
|
||||
}
|
||||
|
||||
/// <summary>duration 秒后自动销毁此 GameObject。</summary>
|
||||
public void AutoDestroyAfter(float duration)
|
||||
=> Destroy(gameObject, Mathf.Max(0f, duration));
|
||||
|
||||
private void OnDestroy()
|
||||
{
|
||||
foreach (var hb in _hitBoxes)
|
||||
hb?.Deactivate();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user