更新结算界面

This commit is contained in:
2026-07-04 14:45:52 +08:00
parent 0b6dc2653f
commit 08dec79a6e
28 changed files with 3022 additions and 5289 deletions
+60 -2
View File
@@ -60,6 +60,19 @@ namespace IndianOceanAssets.Engine2_5D
[Tooltip("巡逻半径")]
[SerializeField] private float bellPatrolRadius = 3f;
[Header("近战攻击")]
[Tooltip("攻击范围(进入此范围后触发攻击)")]
[SerializeField] private float attackRange = 1.5f;
[Tooltip("攻击冷却时间(秒)")]
[SerializeField] private float attackCooldown = 1.5f;
[Tooltip("每次攻击造成的伤害")]
[SerializeField] private int attackDamage = 1;
[Tooltip("攻击动画触发器名称(Animator Trigger")]
[SerializeField] private string attackAnimTrigger = "Attack";
// 状态枚举
private enum State
{
@@ -83,14 +96,28 @@ namespace IndianOceanAssets.Engine2_5D
private float _patrolTimer; // 巡逻计时器
private Vector3 _patrolTarget; // 当前巡逻目标点
// 攻击相关
private float _attackTimer; // 攻击冷却计时器
private Animator _animator; // 敌人动画
private HealthSystem _playerHealth; // 玩家血量引用
private void Start()
{
if (playerTarget == null)
{
var player = GameObject.FindWithTag("Player");
if (player != null)
{
playerTarget = player.transform;
_playerHealth = player.GetComponent<HealthSystem>();
}
}
else
{
_playerHealth = playerTarget.GetComponent<HealthSystem>();
}
_animator = GetComponent<Animator>();
}
private void OnEnable()
@@ -129,15 +156,24 @@ namespace IndianOceanAssets.Engine2_5D
// ===== ChasingPlayer:追击玩家 =====
private void UpdateChasingPlayer()
{
// 更新攻击冷却
_attackTimer -= Time.deltaTime;
// 检测是否看到玩家
if (CanSeePlayer())
{
_loseSightTimer = 0f; // 重置计时器
// 追击玩家
float dist = XZDistance(transform.position, playerTarget.position);
if (dist > stopDistance)
// 进入攻击范围 → 近战攻击
if (dist <= attackRange)
{
TryAttack();
}
else if (dist > stopDistance)
{
// 追击玩家
MoveToward(playerTarget.position, chaseSpeed);
}
}
@@ -164,6 +200,28 @@ namespace IndianOceanAssets.Engine2_5D
}
}
/// <summary>
/// 尝试近战攻击。在攻击冷却就绪时触发。
/// </summary>
private void TryAttack()
{
if (_attackTimer > 0f) return; // CD 未就绪
_attackTimer = attackCooldown;
// 对玩家造成伤害
if (_playerHealth != null)
{
_playerHealth.Damage(attackDamage);
}
// 触发攻击动画
if (_animator != null && !string.IsNullOrEmpty(attackAnimTrigger))
{
_animator.SetTrigger(attackAnimTrigger);
}
}
// ===== ChasingBell:追击铃铛 =====
private void UpdateChasingBell()
{