多轮审查和修复
This commit is contained in:
48
Assets/Scripts/Enemies/Boss/BossBase.cs
Normal file
48
Assets/Scripts/Enemies/Boss/BossBase.cs
Normal file
@@ -0,0 +1,48 @@
|
||||
using UnityEngine;
|
||||
using BaseGames.Core.Events;
|
||||
|
||||
namespace BaseGames.Enemies
|
||||
{
|
||||
/// <summary>
|
||||
/// Boss 敌人基类。扩展 <see cref="EnemyBase"/> 以支持多阶段切换与战斗结束广播。
|
||||
/// 具体 Boss 继承此类并重写 <see cref="EnterPhase"/>。
|
||||
/// </summary>
|
||||
public class BossBase : EnemyBase
|
||||
{
|
||||
[Header("Boss 配置")]
|
||||
[SerializeField] private string _bossId;
|
||||
[SerializeField] private BoolEventChannelSO _onBossFightEnded;
|
||||
[SerializeField] private BossPhaseEventChannelSO _onBossPhaseChanged;
|
||||
|
||||
public string BossId => _bossId;
|
||||
|
||||
protected int _currentPhase = 0;
|
||||
|
||||
/// <summary>
|
||||
/// 进入指定阶段。广播 <see cref="BossPhaseEvent"/> 供 UI / 音乐系统响应。
|
||||
/// 子类可重写以添加额外过渡逻辑(动画、无敌帧等)。
|
||||
/// </summary>
|
||||
public virtual void EnterPhase(int phase)
|
||||
{
|
||||
_currentPhase = phase;
|
||||
_onBossPhaseChanged?.Raise(new BossPhaseEvent
|
||||
{
|
||||
BossId = _bossId,
|
||||
Phase = phase,
|
||||
});
|
||||
}
|
||||
|
||||
/// <summary>检查当前 HP 是否低于指定百分比(0~1)。</summary>
|
||||
public bool IsHPBelow(float ratio)
|
||||
{
|
||||
if (_stats == null || _stats.MaxHP <= 0) return false;
|
||||
return (float)_stats.CurrentHP / _stats.MaxHP < ratio;
|
||||
}
|
||||
|
||||
protected override void Die()
|
||||
{
|
||||
base.Die();
|
||||
_onBossFightEnded?.Raise(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user