```
feat(buildings): 添加金矿建筑功能并优化建筑健康系统 - 为兵营和金矿添加伤害数字显示功能,包括持续时间、上升高度等参数 - 将金矿脚本重构为GoldMine组件,实现定时产出金币机制 - 为所有单位添加NavMeshAgent组件以支持导航寻路 - 为弓箭手、法师等单位添加分离半径和目标扩散参数 - 为建筑添加碰撞体和标签设置 - 修复当前能量字段命名规范(currentEnergy -> _currentEnergy) - 调整金矿健康值从100提升至500 - 统一伤害数字显示相关属性配置 ```
This commit is contained in:
1 parent
27df2aa8b1
commit
1cdb7c3910
22 files changed
+804
-55
No files matched your search
@@ -0,0 +1,68 @@
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// 主角金币产出组件,挂载到主角单位上
|
||||
/// </summary>
|
||||
public class HeroGoldProducer : MonoBehaviour
|
||||
{
|
||||
[Header("金币产出")]
|
||||
[Tooltip("每次产出的金币数量")]
|
||||
[SerializeField] private int goldPerProduction = 30;
|
||||
|
||||
[Tooltip("产出间隔(秒)")]
|
||||
[SerializeField] private float productionInterval = 8f;
|
||||
|
||||
[Header("可选:血条和进度条")]
|
||||
[SerializeField] private WorldHealthBar healthBar;
|
||||
|
||||
private float productionTimer = 0f;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
// 如果没有手动指定,尝试自动获取
|
||||
if (healthBar == null)
|
||||
{
|
||||
healthBar = GetComponent<WorldHealthBar>();
|
||||
}
|
||||
}
|
||||
|
||||
private void Start()
|
||||
{
|
||||
// 初始化进度条(使用能量条显示产出进度)
|
||||
if (healthBar != null)
|
||||
{
|
||||
healthBar.maxEnergy = 100f;
|
||||
healthBar.currentEnergy = 0f;
|
||||
}
|
||||
}
|
||||
|
||||
private void Update()
|
||||
{
|
||||
if (GoldManager.Instance == null) return;
|
||||
|
||||
productionTimer += Time.deltaTime;
|
||||
|
||||
// 更新进度条
|
||||
if (healthBar != null)
|
||||
{
|
||||
float progress = Mathf.Clamp01(productionTimer / productionInterval);
|
||||
healthBar.currentEnergy = progress * 100f;
|
||||
}
|
||||
|
||||
// 达到产出时间
|
||||
if (productionTimer >= productionInterval)
|
||||
{
|
||||
ProduceGold();
|
||||
productionTimer = 0f;
|
||||
}
|
||||
}
|
||||
|
||||
private void ProduceGold()
|
||||
{
|
||||
if (GoldManager.Instance != null)
|
||||
{
|
||||
GoldManager.Instance.AddGold(goldPerProduction);
|
||||
Debug.Log($"主角 {gameObject.name} 产出金币 +{goldPerProduction}");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user