feat(gameplay): 添加水晶矿资源产出系统和改进AI卡组管理

- 实现水晶矿占领后的能量资源产出功能,包括manaInterval和manaAmount配置
- 添加敌方AI的能量管理系统,支持通过AddMana方法增加能量
- 实现AI卡组轮转机制,包含手牌管理和抽卡队列功能
- 优化单位AI的目标选择和战斗逻辑,修复目标切换问题

- 水晶矿现在可以按设定间隔为所属阵营提供能量资源
-
This commit is contained in:
huadexuan committed 2026-09-21 18:17:05 +08:00
1 parent b185e5768b
commit 06940a849c
21 files changed
+555 -520

No files matched your search

+90 -75
View File
@@ -6,98 +6,93 @@
> 核心特点:轻量操作、自由寻路、资源与出兵据点争夺、兵种克制,无复杂框选与编队
## 一、核心定位
本玩法为《召唤之战》的「拆家流」经典RTS版本,玩家通过消耗法力召唤单位,争夺战场上的水晶矿与随机出兵点,建立经济或兵力优势,最终突破防御摧毁敌方基地取胜。
本玩法为《召唤之战》的「拆家流」经典RTS版本,玩家通过消耗法力召唤单位,争夺战场上的混沌之门,建立兵力优势,最终突破防御摧毁敌方基地取胜。
- 操作极简:仅需「点击建筑设定攻击标志 + 点击卡牌召唤单位」,无需框选、编队、驻守指令;
- 单位全自动作战:复用自动寻路与寻敌逻辑,玩家不干预单位微操;
- 策略核心:出兵目标选择、兵种搭配、资源分配节奏、资源点与出兵点取舍,避免纯数值对撞。
- 策略核心:出兵目标选择、兵种搭配、资源分配节奏、混沌之门争夺与绕路风险,避免纯数值对撞。
## 二、战场地图设计
### 2.1 整体布局
采用**竖版9:16比例**,核心可通行区域为十字形,外围为不可通行障碍物(岩石/树林)。四个核心目标采用对角线布局,充分利用屏幕四角空间,同时保留中央交战区和多路径进攻空间。
采用**竖版9:16比例**。地图保留一座公共混沌之门,主城堡与混沌之门不放在同一条短直线上,而是采用横向错位布局:主城堡偏右,混沌之门偏左。单位前往混沌之门需要绕行,不能出生后两步直接接触据点;单位也可以放弃据点,沿更直接的路线推进敌方主城堡。
```text
┌─────────────────────────────────────┐
│ │
│ 【左上资源据点】 【敌方城堡】 │
│ ● ■ │
│ \ / │
│ \ / │
│ \ / │
│ 【中央交战区】 │
│ / \ │
│ / \ │
│ / \ │
│ 【我方城堡】 【右下资源据点】 │
│ ■ ● │
│ │
│ 【敌方城堡】 │
│ ■ │
│ 中央交战区 ╱ │
│ ╱───────────────╲ │
│ 【混沌之门】 ╲ │
│ ● ╲ │
│ 【我方城堡】
│ ■ │
└─────────────────────────────────────┘
```
- 我方城堡位于左下,敌方城堡位于右上;
- 右下资源据点是我方近点、敌方远点;
- 左上资源据点是敌方近点、我方远点;
- 两个资源据点均可被双方争夺,不属于任何一方的专属区域;
- 中央区域作为双方部队交战和拦截远点部队的主要区域;
- 资源据点不应贴近屏幕边缘,应与城堡和中央交战区保持可寻路距离。
- 双方主城堡位于地图纵向两端,并整体偏右;
- 混沌之门位于地图左侧公共区域,与主城堡形成横向错位;
- 主攻主城堡的单位走较直接的主路线;指定混沌之门的单位需要走左侧绕行路线;
- 混沌之门是唯一公共资源据点,不再保留水晶矿;
- 混沌之门既是争夺目标,也是占领后持续提供额外兵源的战略目标;
- 镜头保持近距离以保证兵种可读性,玩家通过上下拖动或镜头跟随查看纵向战场,不通过缩小镜头查看全图。
建议先使用以下相对坐标进行场景布局,再根据NavMesh实际路径距离微调:
建议坐标仅作为布局方向,最终以实际路径长度和镜头范围调整:
| 目标 | 建议坐标(X, Z) | 距离关系 |
|------|------------------|----------|
| 我方城堡 | (-7, 8) | 我方出生点 |
| 右下资源据点 | (7, 24) | 我方近点、敌方远点 |
| 左上资源据点 | (-7, 46) | 敌方近点、我方远点 |
| 敌方城堡 | (7, 62) | 敌方出生点 |
双方均可选择进攻任意资源据点。近点更容易快速占领和支援,远点需要承担更长的行军距离和被中央区域拦截的风险。
| 目标 | 建议位置 | 距离关系 |
|------|----------|----------|
| 我方主城堡 | 右下侧,约 (6, 0, 8) | 我方出生点,主路线起点 |
| 混沌之门 | 左侧中部,约 (-6, 0, 45) | 公共绕路目标,距离双方出生点都应有行军时间 |
| 敌方主城堡 | 右上侧,约 (6, 0, 82) | 敌方出生点和最终拆家目标 |
### 2.2 区域说明
| 区域 | 位置 | 规则 |
|------|------|------|
| 己方阵地 | 左下方 | 包含我方城堡,为单位出生点(城堡前方出兵点) |
| 敌方阵地 | 右上方 | 包含敌方城堡,为最终攻击目标 |
| 中央交战区 | 战场中央 | 双方部队交战、拦截和转向的主要区域 |
| 左上资源据点 | 敌方城堡一侧 | 可攻击争夺,双方均可进攻;作为敌方近点、我方远点 |
| 右下资源据点 | 我方城堡一侧 | 可攻击争夺,双方均可进攻;作为我方近点、我方远点 |
| 主通道 | 各目标之间 | 基于NavMesh自由寻路,不设置强制固定路线 |
| 己方阵地 | 右下方 | 包含我方城堡和出生点 |
| 敌方阵地 | 右上方 | 包含敌方城堡和出生点 |
| 中央交战区 | 地图中部 | 双方部队交战、拦截和分流的主要区域 |
| 混沌之门区域 | 左侧中部 | 唯一公共据点,双方均可争夺,占领后自动产兵 |
| 主通道 | 城堡之间偏右路线 | 直接推进敌方城堡,不必经过混沌之门 |
| 绕行通道 | 主通道向左侧延伸 | 前往混沌之门,距离更长但可换取持续兵源 |
### 2.3 寻路规则
- 基于NavMesh实现自由寻路,仅十字形主通道和中央交战区为可通行烘焙区,外围障碍物完全阻挡;
- **建筑实体(城堡/水晶矿/混沌之门)使用独立 Buildings 层,排除在 NavMesh 烘焙之外**;建筑足迹通过运行时 NavMeshObstacle(圆柱 carve)挖空,单位绕行建筑不穿模、也不会被建筑模型的斜面"抬升";
- 单位自动计算前往绑定目标的最短路径,途中自动避让友军与地形;
- 基于NavMesh实现自由寻路,主通道和混沌之门绕行通道均可通行,外围障碍物阻挡无关区域;
- **建筑实体(城堡/混沌之门)使用独立 Buildings 层,排除在 NavMesh 烘焙之外**;建筑足迹通过运行时 NavMeshObstacle(圆柱 carve)挖空,单位绕行建筑不穿模、也不会被建筑模型的斜面"抬升";
- 单位自动计算前往绑定目标的路径,途中自动避让友军与地形;
- 单位贴地统一使用 `NavMeshAgent.baseOffset = 0`,跟随平坦 NavMesh 高度,不再根据模型 Renderer 包围盒自动校准,避免模型原点偏移导致角色运行时抬升;
- 无强制固定路线,单位可在主通道和中央交战区内自由移动,远点部队可能在中央区域遭遇拦截。
- 无强制固定路线,但主通道和绕行通道的实际长度应形成明显取舍:直推更快,绕门更远;
- 混沌之门被指定为目标时,单位必须完成绕行,不应因为据点摆放过近而两步接触。
## 三、资源系统
### 3.1 法力水晶
- 法力是玩家主动召唤单位、释放技能使用的基础资源;
- 法力基础自动回复(3秒恢复1点),上限10点;
- 主动出兵始终受到法力上限和回复速度限制,避免玩家无限堆叠单位;
- 水晶矿占领后,按固定间隔为当前归属方增加1点能量,不直接改变基础能量回复速度;
- 当前版本不再设置水晶矿,法力只通过基础回复获得;混沌之门提供的是额外自动兵源,不直接增加法力。
### 3.2 资源据点争夺规则
- 水晶矿与混沌之门均为可攻击目标,不设置生命值,使用**红蓝争夺进度条**(0~100);
### 3.2 混沌之门争夺规则
- 混沌之门是唯一公共据点,使用红蓝争夺进度条(0~100),不设置普通生命值;
- 进度条中立状态为50:50。以蓝方视角为例,100表示蓝方完全占领,0表示红方完全占领;
- 己方单位攻击据点时,进度条向己方方向偏移;敌方攻击时,进度条向敌方方向偏移;
- 进度条达到己方100%时,据点归属己方并开始产出对应资源(据点 teamId 翻转,光球/裂缝变色);
- 据点归属后,即使敌方开始攻击并推动进度条反向移动,原占有方仍持续获得产出;
- 只有当进度条被对方完全推到100%(即原占有方进度为0)时,才中止原占有方产出并将据点翻转给对方;
- 进度条达到己方100%时,据点归属己方并开始自动出兵(据点teamId翻转,光球/裂缝变色);
- 据点归属后,即使敌方开始攻击并推动进度条反向移动,原占有方仍持续获得自动出兵;
- 只有当进度条被对方完全推到100%(即原占有方进度为0)时,才中止原占有方出兵并将据点翻转给对方;
- 无任何单位攻击时,进度条保持当前数值不变;
- 据点翻转后,按相同规则由新的占有方获得对应产出。
- **中立据点属于第三阵营(teamId=2),单位基础寻敌不会自动攻击中立据点**,只有玩家攻击标志指向它时才会被进攻(避免单位路过就绕去打矿)。
- 中立据点属于第三阵营(teamId=2),单位基础寻敌不会自动攻击,只有攻击标志指向混沌之门时才会被进攻;
- 混沌之门位于主城堡主路线外侧,争夺它需要承担绕路和暴露兵线的风险。
### 3.3 水晶矿产出
- 水晶矿占领后,按固定间隔为当前归属方增加1点能量;
- 能量收益归属当前占领方,不改变基础能量回复速度;
- 水晶矿被对方完全翻转后,后续能量收益立即转移给新的占领方;
- 能量收益的间隔和单局上限根据战斗测试调整。
### 3.4 混沌之门产出(原随机出兵点)
- 混沌之门归属己方后,按固定间隔在门口自动生成1个单位;
- 产出单位从**当前玩家出战卡组**中随机抽取,不从所有已解锁或全体角色中抽取;
- 产出单位按当前玩家出战卡组进行概率抽取:低费用卡为主要产出,高费用卡仅以较低概率出现;具体概率按战斗测试调整;
- 产出单位不消耗玩家法力,价值定位低于玩家主动召唤,避免完全替代正常出兵;
- 产出单位默认执行混沌之门归属方当前的攻击标志目标;如无特殊设置,则默认目标为敌方主基地;
### 3.3 混沌之门自动出兵
- 混沌之门归属己方后,按固定间隔在门附近自动生成1个单位;
- 产出单位从当前阵营的8卡组中抽取,并遵守当前4张手牌轮转,不从全体角色随机无限抽取;
- 出兵不消耗玩家法力,价值低于手动出兵,定位是占领据点后的持续兵源;
- 出兵费用上限随战斗时间提高:
- 0~30秒:最高3费;
- 30~75秒:最高4费;
- 75~120秒:最高5费;
- 120~180秒:最高6费;
- 180秒以后:最高8费;
- 正常情况下只允许当前4张手牌中不超过时间费用上限的卡;
- 若当前4张手牌全部高于时间费用上限,则临时放宽到当前手牌中的最低费用,保证混沌之门不会因卡组构成而完全停产;
- 低费用卡权重更高,高费用卡权重更低;解锁上限决定“能不能出”,概率权重决定“更容易出谁”;
- 自动出兵单位默认执行混沌之门归属方当前攻击标志目标;如无特殊设置,则默认目标为敌方主城堡;
- 混沌之门被对方完全翻转后,自动出兵权转移给对方。
## 四、单位系统
@@ -123,39 +118,59 @@ if (detectionRange 视野内有敌方战斗单位) {
} else {
直奔出生使命建筑(出生时快照的攻击标志)
到达攻击范围后再判断建筑阵营:
- 非我方 → 攻击它(推争夺进度/拆城堡)
- 非我方 → 攻击它(推混沌之门争夺进度/拆城堡)
- 我方(增援完成)→ 该单位使命转向敌方主城堡,继续走
}
```
- **视野内敌方单位永远最高优先级**:行军撞敌即停下互殴,击杀后继续执行原使命;
- 中立建筑(水晶矿/混沌之门)**不在自动寻敌范围内**,只能通过攻击标志指定进攻;
- 增援逻辑:玩家把标志点到己方已占领据点,新兵出生直奔该据点增援,到达后自动回归主城堡路线——玩家通过"改变出兵流"实现救援,无需驻守指令。
- 中立建筑(混沌之门)**不在自动寻敌范围内**,只能通过攻击标志指定进攻;
- 增援逻辑:玩家把标志点到己方已占领混沌之门,新兵出生直奔该据点增援,到达后自动回归主城堡路线——玩家通过“改变出兵流”实现救援,无需驻守指令。
### 5.2 攻击标志系统(已实现,替代原目标按钮组方案)
核心操作:**点击建筑切换攻击标志**,无按钮、无模式开关。
- **双阵营独立标志**:蓝方/红方各自一个攻击标志,默认指向敌方主城堡;本地玩家点击建筑只切换自己阵营的标志(敌方标志由敌方AI/玩家控制,互不干扰);
- 标志视觉:建筑头顶倒锥箭头,颜色随标志所属阵营(蓝箭=蓝方目标,红箭=红方目标),双方标志指向同一建筑时并排错开显示;
- 点击规则:可点敌方/中立/己方占领建筑(点己方建筑=增援信号);点自己方主城堡无效;
- **出生即使命**:单位出生时快照当时己方标志指向的建筑作为终身使命(missionTarget),之后标志切换**不影响已存活单位**——这是分兵的实现方式:先点水晶矿出2个兵,再点混沌之门出兵,两路各走各的;
- **出生即使命**:单位出生时快照当时己方标志指向的建筑作为终身使命,之后标志切换**不影响已存活单位**——这是分兵的实现方式:先点混沌之门出兵,再点敌方主城堡出兵,两路各走各的;
- 使命兜底:使命建筑被销毁时,单位自动转向敌方主城堡。
### 5.3 战斗行为示例
1. 玩家点击水晶矿(蓝箭头从敌堡跳到水晶矿),召唤2个步兵;
2. 步兵出生即绑定使命=水晶矿,直奔水晶矿;
1. 玩家点击混沌之门(攻击标志从敌堡跳到混沌之门),召唤2个步兵;
2. 步兵出生即绑定使命=混沌之门,沿绕行路线前进;
3. 途中遭遇敌方单位,步兵立刻停下互殴(视野优先);
4. 敌人被击杀后,步兵继续前往水晶矿,攻击推进争夺进度;
5. 玩家再点击混沌之门(标志切换),召唤1个重甲,重甲使命=混沌之门,自动前往;
6. 此前的2个步兵仍继续攻击水晶矿,不受标志切换影响,实现分兵作战;
7. 敌方反扑我方占领的水晶矿:玩家点击该水晶矿(增援信号),新出的兵直奔水晶矿救援,清场后单位自动回归敌方主城堡路线;
8. 混沌之门归属己方期间,按固定间隔从玩家出战卡组随机生成单位,生成单位默认前往敌方主基地。
4. 敌人被击杀后,步兵继续前往混沌之门,攻击推进争夺进度;
5. 玩家再点击敌方主城堡(标志切换),召唤1个重甲,重甲使命=敌方主城堡,沿主路线推进;
6. 此前的2个步兵仍继续攻击混沌之门,不受标志切换影响,实现分兵作战;
7. 敌方反扑己方混沌之门:玩家点击混沌之门(增援信号),持续出兵流增援;
8. 混沌之门归属己方期间,按时间费用上限和当前4张手牌轮转自动生成单位,生成单位默认前往敌方主城堡。
### 5.4 建筑受击与攻击距离
- 四个建筑(蓝/红城堡、水晶矿、混沌之门)统一 **Building Tag** + CapsuleCollider(圆柱,半径按模型网格实际顶点计算);
- **三个建筑目标**(蓝/红城堡、混沌之门)统一 `Building Tag` + CapsuleCollider;混沌之门使用 CrystalMineCapture 争夺进度,城堡使用 WorldHealthBar 血量;
- 单位攻击建筑的判定距离用 **Collider.ClosestPoint 计算到建筑表面的水平距离**(城堡中心在模型内部,直接用中心距离会导致够不着/隔空打);
- 攻击距离 = 单位 attackRange + 建筑专用小缓冲(0.2,贴近墙体攻击);单位互打保持 1.5 缓冲;
- 伤害管线:UnitBase(普通单位)→ CrystalMineCapture(据点争夺)→ BuildingHealth(建筑)→ WorldHealthBar(通用血量),近战/技能/飞行物全类型支持。
## 六、UI布局与操作
## 六、弹道与技能表现
### 6.1 视觉与逻辑分离
- 近战单位:由攻击动画的 `OnAttackEffect` Event 直接结算伤害,不创建飞行物;
- 弓箭手、法师等远程单位:继续使用 `Projectile.cs` 负责锁敌、移动、碰撞和伤害结算,视觉不使用完整3D模型;
- 远程飞行物统一采用 **Quad + 透明贴图 + 共享轻量材质**,例如箭矢贴图、法师火球贴图;Quad只负责显示,Projectile只负责逻辑;
- 火球等贴图保持小尺寸、强轮廓、高对比,适配近距离2.5D镜头和移动端显示;
- 范围技能:使用 Particle System 表现范围效果,并由范围伤害脚本处理一次性或持续伤害;
- 大量同时存在的箭矢、火球或弹幕:使用 Projectile 对象池,发射时取出、命中或超时后归还,避免频繁 `Instantiate/Destroy`。
### 6.2 标准远程Prefab结构
```text
Projectile_Fireball
├── Quad(透明火球贴图)
└── Projectile.cs(锁敌、飞行、命中、伤害)
```
- 不为普通箭矢和火球配置骨骼、Animator或完整模型;
- 贴图正面朝向摄像机或根据飞行方向旋转;
- 逻辑碰撞体使用轻量 Collider/Trigger,视觉尺寸与碰撞尺寸分开调节;
- 对象池作为大量弹道时的后续性能优化,不改变现有伤害接口。
## 七、UI布局与操作
### 6.1 整体布局
采用「上战场、下操作」的竖版经典结构,战斗视野完整,拇指可覆盖全部操作区。
```text
@@ -170,7 +185,7 @@ if (detectionRange 视野内有敌方战斗单位) {
```
### 6.2 攻击标志(替代原目标按钮组)
- 交互:战斗区域内直接点击建筑(城堡/水晶矿/混沌之门),攻击标志(头顶箭头)跳转到该建筑;
- 交互:战斗区域内直接点击建筑(城堡/混沌之门),攻击标志(头顶箭头)跳转到该建筑;
- 无按钮组、无模式开关、无额外UI——标志本身就是全局状态显示;
- 逻辑:仅决定「下一次召唤单位的目标」,不影响场上已存活单位;
- 默认标志=敌方主城堡,开局无需任何操作即可出兵推塔。