Files
daluandou/召唤之战 - 核心玩法拆家版.md
T
2026-09-21 18:17:56 +08:00

242 lines
17 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 召唤之战-核心玩法拆家版
> 版本:V1.2(2026-09-19 按当前实现更新战斗玩法)
> 定位:竖版手机休闲即时战略小游戏
> 单局时长:1~3分钟
> 核心目标:摧毁敌方主基地获胜
> 核心特点:轻量操作、自由寻路、资源与出兵据点争夺、兵种克制,无复杂框选与编队
## 一、核心定位
本玩法为《召唤之战》的「拆家流」经典RTS版本,玩家通过消耗法力召唤单位,争夺战场上的混沌之门,建立兵力优势,最终突破防御摧毁敌方基地取胜。
- 操作极简:仅需「点击建筑设定攻击标志 + 点击卡牌召唤单位」,无需框选、编队、驻守指令;
- 单位全自动作战:复用自动寻路与寻敌逻辑,玩家不干预单位微操;
- 策略核心:出兵目标选择、兵种搭配、资源分配节奏、混沌之门争夺与绕路风险,避免纯数值对撞。
## 二、战场地图设计
### 2.1 整体布局
采用**竖版9:16比例**。地图保留一座公共混沌之门,主城堡与混沌之门不放在同一条短直线上,而是采用横向错位布局:主城堡偏右,混沌之门偏左。单位前往混沌之门需要绕行,不能出生后两步直接接触据点;单位也可以放弃据点,沿更直接的路线推进敌方主城堡。
```text
┌─────────────────────────────────────┐
│ 【敌方城堡】 │
│ ■ │
│ 中央交战区 ╱ │
│ ╱───────────────╲ │
│ 【混沌之门】 ╲ │
│ ● ╲ │
│ 【我方城堡】
│ ■ │
└─────────────────────────────────────┘
```
- 双方主城堡位于地图纵向两端,并整体偏右;
- 混沌之门位于地图左侧公共区域,与主城堡形成横向错位;
- 主攻主城堡的单位走较直接的主路线;指定混沌之门的单位需要走左侧绕行路线;
- 混沌之门是唯一公共资源据点,不再保留水晶矿;
- 混沌之门既是争夺目标,也是占领后持续提供额外兵源的战略目标;
- 镜头保持近距离以保证兵种可读性,玩家通过上下拖动或镜头跟随查看纵向战场,不通过缩小镜头查看全图。
建议坐标仅作为布局方向,最终以实际路径长度和镜头范围调整:
| 目标 | 建议位置 | 距离关系 |
|------|----------|----------|
| 我方主城堡 | 右下侧,约 (6, 0, 8) | 我方出生点,主路线起点 |
| 混沌之门 | 左侧中部,约 (-6, 0, 45) | 公共绕路目标,距离双方出生点都应有行军时间 |
| 敌方主城堡 | 右上侧,约 (6, 0, 82) | 敌方出生点和最终拆家目标 |
### 2.2 区域说明
| 区域 | 位置 | 规则 |
|------|------|------|
| 己方阵地 | 右下方 | 包含我方城堡和出生点 |
| 敌方阵地 | 右上方 | 包含敌方城堡和出生点 |
| 中央交战区 | 地图中部 | 双方部队交战、拦截和分流的主要区域 |
| 混沌之门区域 | 左侧中部 | 唯一公共据点,双方均可争夺,占领后自动产兵 |
| 主通道 | 城堡之间偏右路线 | 直接推进敌方城堡,不必经过混沌之门 |
| 绕行通道 | 主通道向左侧延伸 | 前往混沌之门,距离更长但可换取持续兵源 |
### 2.3 寻路规则
- 基于NavMesh实现自由寻路,主通道和混沌之门绕行通道均可通行,外围障碍物阻挡无关区域;
- **建筑实体(城堡/混沌之门)使用独立 Buildings 层,排除在 NavMesh 烘焙之外**;建筑足迹通过运行时 NavMeshObstacle(圆柱 carve)挖空,单位绕行建筑不穿模、也不会被建筑模型的斜面"抬升";
- 单位自动计算前往绑定目标的路径,途中自动避让友军与地形;
- 单位贴地统一使用 `NavMeshAgent.baseOffset = 0`,跟随平坦 NavMesh 高度,不再根据模型 Renderer 包围盒自动校准,避免模型原点偏移导致角色运行时抬升;
- 无强制固定路线,但主通道和绕行通道的实际长度应形成明显取舍:直推更快,绕门更远;
- 混沌之门被指定为目标时,单位必须完成绕行,不应因为据点摆放过近而两步接触。
## 三、资源系统
### 3.1 法力水晶
- 法力是玩家主动召唤单位、释放技能使用的基础资源;
- 法力基础自动回复(3秒恢复1点),上限10点;
- 主动出兵始终受到法力上限和回复速度限制,避免玩家无限堆叠单位;
- 当前版本不再设置水晶矿,法力只通过基础回复获得;混沌之门提供的是额外自动兵源,不直接增加法力。
### 3.2 混沌之门争夺规则
- 混沌之门是唯一公共据点,使用红蓝争夺进度条(0~100),不设置普通生命值;
- 进度条中立状态为50:50。以蓝方视角为例,100表示蓝方完全占领,0表示红方完全占领;
- 己方单位攻击据点时,进度条向己方方向偏移;敌方攻击时,进度条向敌方方向偏移;
- 进度条达到己方100%时,据点归属己方并开始自动出兵(据点teamId翻转,光球/裂缝变色);
- 据点归属后,即使敌方开始攻击并推动进度条反向移动,原占有方仍持续获得自动出兵;
- 只有当进度条被对方完全推到100%(即原占有方进度为0)时,才中止原占有方出兵并将据点翻转给对方;
- 无任何单位攻击时,进度条保持当前数值不变;
- 中立据点属于第三阵营(teamId=2),单位基础寻敌不会自动攻击,只有攻击标志指向混沌之门时才会被进攻;
- 混沌之门位于主城堡主路线外侧,争夺它需要承担绕路和暴露兵线的风险。
### 3.3 混沌之门自动出兵
- 混沌之门归属己方后,按固定间隔在门附近自动生成1个单位;
- 产出单位从当前阵营的8卡组中抽取,并遵守当前4张手牌轮转,不从全体角色随机无限抽取;
- 出兵不消耗玩家法力,价值低于手动出兵,定位是占领据点后的持续兵源;
- 出兵费用上限随战斗时间提高:
- 0~30秒:最高3费;
- 30~75秒:最高4费;
- 75~120秒:最高5费;
- 120~180秒:最高6费;
- 180秒以后:最高8费;
- 正常情况下只允许当前4张手牌中不超过时间费用上限的卡;
- 若当前4张手牌全部高于时间费用上限,则临时放宽到当前手牌中的最低费用,保证混沌之门不会因卡组构成而完全停产;
- 低费用卡权重更高,高费用卡权重更低;解锁上限决定“能不能出”,概率权重决定“更容易出谁”;
- 自动出兵单位默认执行混沌之门归属方当前攻击标志目标;如无特殊设置,则默认目标为敌方主城堡;
- 混沌之门被对方完全翻转后,自动出兵权转移给对方。
## 四、单位系统
### 4.1 通用属性
所有单位统一包含:召唤费用、生命值、攻击力、攻击距离(attackRange)、寻敌视野(detectionRange,默认25米)、移动速度。
### 4.2 单位分类与定位
| 单位 | 费用档位 | 定位 | 核心特点 |
|------|----------|------|----------|
| 近战步兵 | 低费 | 前排肉盾/量产 | 血量适中,近战输出,优先攻击敌方单位 |
| 远程射手 | 中费 | 后排输出 | 身脆伤害高,需前排保护,克制无甲单位 |
| 重甲单位 | 高费 | 推线核心 | 高血量,伤害偏低,优先攻击建筑 |
| 范围法师 | 高额 | 群体输出 | 范围伤害,克制扎堆小兵,自身极脆 |
### 4.3 基础克制关系
步兵克制法师、射手克制步兵、重甲克制建筑、法师克制扎堆步兵,形成循环博弈。
## 五、核心战斗逻辑
### 5.1 单位AI寻敌逻辑(已实现)
```
if (detectionRange 视野内有敌方战斗单位) {
攻击最近的敌方单位(路上撞见就打)
} else {
直奔出生使命建筑(出生时快照的攻击标志)
到达攻击范围后再判断建筑阵营:
- 非我方 → 攻击它(推混沌之门争夺进度/拆城堡)
- 我方(增援完成)→ 该单位使命转向敌方主城堡,继续走
}
```
- **视野内敌方单位永远最高优先级**:行军撞敌即停下互殴,击杀后继续执行原使命;
- 中立建筑(混沌之门)**不在自动寻敌范围内**,只能通过攻击标志指定进攻;
- 增援逻辑:玩家把标志点到己方已占领混沌之门,新兵出生直奔该据点增援,到达后自动回归主城堡路线——玩家通过“改变出兵流”实现救援,无需驻守指令。
### 5.2 攻击标志系统(已实现,替代原目标按钮组方案)
核心操作:**点击建筑切换攻击标志**,无按钮、无模式开关。
- **双阵营独立标志**:蓝方/红方各自一个攻击标志,默认指向敌方主城堡;本地玩家点击建筑只切换自己阵营的标志(敌方标志由敌方AI/玩家控制,互不干扰);
- 标志视觉:建筑头顶倒锥箭头,颜色随标志所属阵营(蓝箭=蓝方目标,红箭=红方目标),双方标志指向同一建筑时并排错开显示;
- 点击规则:可点敌方/中立/己方占领建筑(点己方建筑=增援信号);点自己方主城堡无效;
- **出生即使命**:单位出生时快照当时己方标志指向的建筑作为终身使命,之后标志切换**不影响已存活单位**——这是分兵的实现方式:先点混沌之门出兵,再点敌方主城堡出兵,两路各走各的;
- 使命兜底:使命建筑被销毁时,单位自动转向敌方主城堡。
### 5.3 战斗行为示例
1. 玩家点击混沌之门(攻击标志从敌堡跳到混沌之门),召唤2个步兵;
2. 步兵出生即绑定使命=混沌之门,沿绕行路线前进;
3. 途中遭遇敌方单位,步兵立刻停下互殴(视野优先);
4. 敌人被击杀后,步兵继续前往混沌之门,攻击推进争夺进度;
5. 玩家再点击敌方主城堡(标志切换),召唤1个重甲,重甲使命=敌方主城堡,沿主路线推进;
6. 此前的2个步兵仍继续攻击混沌之门,不受标志切换影响,实现分兵作战;
7. 敌方反扑己方混沌之门:玩家点击混沌之门(增援信号),持续出兵流增援;
8. 混沌之门归属己方期间,按时间费用上限和当前4张手牌轮转自动生成单位,生成单位默认前往敌方主城堡。
### 5.4 建筑受击与攻击距离
- **三个建筑目标**(蓝/红城堡、混沌之门)统一 `Building Tag` + CapsuleCollider;混沌之门使用 CrystalMineCapture 争夺进度,城堡使用 WorldHealthBar 血量;
- 单位攻击建筑的判定距离用 **Collider.ClosestPoint 计算到建筑表面的水平距离**(城堡中心在模型内部,直接用中心距离会导致够不着/隔空打);
- 攻击距离 = 单位 attackRange + 建筑专用小缓冲(0.2,贴近墙体攻击);单位互打保持 1.5 缓冲;
- 伤害管线:UnitBase(普通单位)→ CrystalMineCapture(据点争夺)→ BuildingHealth(建筑)→ WorldHealthBar(通用血量),近战/技能/飞行物全类型支持。
## 六、弹道与技能表现
### 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
┌──────────────────────────────┐
│ │
│ 战场区域(2.5D) │
│ (点击建筑切换攻击标志) │
│ │
├──────────────────────────────┤
│ 步兵 射手 重甲 法师 │ ← 单位召唤卡牌面板
└──────────────────────────────┘
```
### 6.2 攻击标志(替代原目标按钮组)
- 交互:战斗区域内直接点击建筑(城堡/混沌之门),攻击标志(头顶箭头)跳转到该建筑;
- 无按钮组、无模式开关、无额外UI——标志本身就是全局状态显示;
- 逻辑:仅决定「下一次召唤单位的目标」,不影响场上已存活单位;
- 默认标志=敌方主城堡,开局无需任何操作即可出兵推塔。
### 6.3 单位召唤卡牌面板
- 位置:屏幕最底部,横向排列单位卡牌;
- 交互:点击卡牌消耗对应法力(+卡牌冷却),单位在己方城堡前方出兵点生成;
- 单位出生继承当时攻击标志为目标(出生即使命);
- 信息:卡牌显示单位图标、召唤费用,费用不足/冷却中置灰不可点击。
### 6.4 标准操作流程
1. 观察战场局势,点击建筑设定攻击标志(默认敌堡,可不点直接出兵);
2. 点击单位卡牌,消耗法力召唤对应兵种,新兵直奔标志建筑;
3. 多批次点击不同建筑+出兵,形成多线分兵作战;
4. 发现己方据点被反扑:点该据点(增援信号)→ 持续出兵流增援 → 清场后单位自动回归推塔。
## 七、单局对局流程
1. **开局阶段(0~30秒)**
双方基础法力回复,默认出兵冲基地试探;也可以绕路争夺混沌之门,建立持续兵源优势。
2. **博弈阶段(30秒~1分30秒)**
围绕混沌之门展开争夺,搭配兵种组合,用前排+后排阵容推进;通过分兵牵制据点与主线;据点被反扑时用标志增援。
3. **决胜阶段(1分30秒~3分钟)**
积累足够兵力后集中推进,集火敌方城堡;城堡血量(1000)归零则对局结束。
若3分钟未分胜负,按城堡剩余血量百分比判定胜负,防止无限拉扯。
## 八、核心策略博弈点
1. **资源节奏**:攒法力出高费重甲,还是持续低费小兵压制;
2. **据点取舍**:优先争夺混沌之门获得持续兵源,还是沿主路线速攻敌方城堡;
3. **分兵策略**:一部分兵绕路争夺混沌之门,另一部分兵走主路线压制城堡;
4. **增援时机**:据点被反扑时是否及时切标志增援——增援的代价是兵力晚到前线(兜圈子),不增援的代价是据点进度被推回(粘性占领提供反应窗口);
5. **兵种搭配**:前排抗线+后排输出的组合,避免被范围伤害一波清场。
## 九、开发落地现状(2026-09-19)
### 9.1 已实现
- **寻路**:NavMesh 全场景平坦烘焙(Y=0.16),Buildings 层排除烘焙 + NavMeshObstacle carve 挖空建筑足迹;
- **贴地**:NavMeshAgent.baseOffset 固定为 0,单位跟随平坦 NavMesh 高度,不再根据模型 Renderer 包围盒自动校准;
- **根运动**:applyRootMotion 全局开启,OnAnimatorMove 统一协调——走路保留动画侧向摇摆/转身(前向分量由 agent 控制防双倍速),攻击/技能根运动全量生效(前冲/后撤);
- **移动架构**:所有单位统一 NavMeshAgent 寻路,CharacterController 移动分支已删除(死代码清理约150行);
- **攻击标志**:AttackTargetController 双阵营标志 + 头顶箭头 + 点击建筑切换 + 出生使命快照;
- **出兵**:CastleSpawnManager 从城堡前方出兵点生成,ManaSystem 能量消耗 + 卡牌冷却;
- **建筑**:蓝/红城堡(UnitTeam + WorldHealthBar 1000HP + CapsuleCollider)、水晶矿/混沌之门(CrystalMineCapture 争夺进度 + 圆柱碰撞体);
- **建筑攻击**:ClosestPoint 表面距离判定,建筑缓冲0.2/单位缓冲1.5;
- **伤害管线**:UnitBase → CrystalMineCapture → BuildingHealth → WorldHealthBar 全类型命中。
### 9.2 待开发
- 水晶矿能量收益逻辑(固定间隔增加能量);
- 混沌之门自动产兵(按费用分层概率抽取卡组单位);
- 敌方AI(红方出兵策略与标志控制);
- 胜负判定(城堡血量归零/超时比较);
- 场地比例调整(单位偏小问题:城堡间距50米→建议32米左右、相机 size 28.8→16~18,需重烘NavMesh与重算建筑碰撞);
- 旧玩法脚本清理(Barracks/GoldSystem/WaveSpawner/BattleSetupManager/SummonerDuelManager 等封存素材)。