多轮审查和修复

This commit is contained in:
2026-05-12 15:34:08 +08:00
parent f55d2a57c3
commit ebbbb7332e
805 changed files with 838724 additions and 1905 deletions

View File

@@ -0,0 +1,51 @@
using UnityEngine;
using BaseGames.Combat;
using BaseGames.Core.Events;
namespace BaseGames.Boss
{
/// <summary>
/// 管理 Boss 的专属弱点 HurtBox如核心、眼睛等
/// 弱点激活期间受到的伤害会乘以 DamageMultiplier。
/// </summary>
public class WeakPointSystem : MonoBehaviour
{
[System.Serializable]
public struct WeakPoint
{
public HurtBox hurtBox;
public GameObject visualIndicator;
}
[SerializeField] private WeakPoint[] _weakPoints;
[SerializeField] private string _bossId;
[SerializeField] private StringEventChannelSO _onVulnerabilityWindowOpened;
private float _damageMultiplier = 1f;
/// <summary>激活或关闭弱点 HurtBox 及视觉指示器。</summary>
/// <param name="active">是否激活。</param>
/// <param name="multiplier">激活时的受击伤害乘数。</param>
/// <param name="activateSpecific">true = 仅激活弱点专属 HurtBoxfalse = 全身视为弱点(不改变 HurtBox 状态)。</param>
public void SetActive(bool active, float multiplier = 1f, bool activateSpecific = false)
{
_damageMultiplier = active ? multiplier : 1f;
if (activateSpecific)
{
foreach (var wp in _weakPoints)
{
wp.hurtBox.gameObject.SetActive(active);
if (wp.visualIndicator != null)
wp.visualIndicator.SetActive(active);
}
}
if (active)
_onVulnerabilityWindowOpened?.Raise(_bossId);
}
/// <summary>弱点 HurtBox 受击时,由 BossStats 调用此方法获取最终伤害系数。</summary>
public float GetDamageMultiplier() => _damageMultiplier;
}
}