Files
daluandou/双路资源点地图示意.html
T
huadexuan 06940a849c ```
feat(gameplay): 添加水晶矿资源产出系统和改进AI卡组管理

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

- 水晶矿现在可以按设定间隔为所属阵营提供能量资源
-
2026-09-21 18:17:05 +08:00

162 lines
12 KiB
HTML
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.
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>召唤之战:地图纵深与公共资源布局</title>
<style>
:root { --bg:#101722; --panel:#182332; --ink:#e8eef5; --muted:#a9b6c5; --blue:#3da5ff; --red:#ff5c68; --gold:#e8b94e; --road:#68798d; --line:#304052; --green:#54c48a; }
* { box-sizing:border-box; }
body { margin:0; background:var(--bg); color:var(--ink); font:16px/1.6 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif; }
main { max-width:1180px; margin:0 auto; padding:28px 18px 52px; }
h1 { margin:0 0 6px; font-size:30px; }
h2 { margin:26px 0 10px; font-size:21px; }
p { margin:8px 0; color:var(--muted); }
.intro { margin-bottom:18px; }
.panel { background:var(--panel); border:1px solid #2c3a4c; border-radius:8px; padding:18px; margin-top:16px; }
.map-wrap { display:grid; grid-template-columns:minmax(0, 1fr) 300px; gap:18px; align-items:start; }
svg { display:block; width:100%; height:auto; background:#dce5d1; border-radius:6px; }
.legend { display:grid; gap:12px; color:var(--muted); font-size:14px; }
.legend div { display:flex; align-items:flex-start; gap:8px; }
.swatch { width:26px; height:12px; border-radius:3px; display:inline-block; flex:0 0 auto; margin-top:5px; }
.swatch.main { background:var(--road); }
.swatch.resource { background:var(--gold); }
.swatch.blue { background:var(--blue); }
.swatch.red { background:var(--red); }
.swatch.boundary { background:#8c6b50; }
.good { border-left:4px solid var(--green); padding-left:12px; }
.note { background:#223044; border-left:4px solid var(--gold); padding:10px 12px; color:var(--muted); }
table { width:100%; border-collapse:collapse; margin-top:12px; }
th,td { text-align:left; padding:9px 10px; border-bottom:1px solid var(--line); }
th { color:#fff; background:#223044; }
td { color:var(--muted); }
code { color:#ffd77a; }
.coords { color:#fff; font-weight:600; white-space:nowrap; }
@media (max-width:820px) { .map-wrap { grid-template-columns:1fr; } h1 { font-size:25px; } }
</style>
</head>
<body>
<main>
<h1>《召唤之战》地图纵深与公共资源布局</h1>
<p class="intro">这是<strong>俯视图</strong>,Unity 坐标约定为:横向是 X,纵向是 Z;蓝方在下方,红方在上方。图中每个位置都标了建议坐标,方便直接对照 Unity Inspector。</p>
<section class="panel">
<h2>推荐方案:保留两个资源点,拉长 Z 轴纵深</h2>
<div class="map-wrap">
<svg viewBox="0 0 760 1080" role="img" aria-label="按 Unity X Z 坐标标注的战场布局">
<defs>
<marker id="blueArrow" markerWidth="10" markerHeight="10" refX="8" refY="5" orient="auto"><path d="M0,0 L10,5 L0,10 Z" fill="#1976d2"/></marker>
<marker id="redArrow" markerWidth="10" markerHeight="10" refX="8" refY="5" orient="auto"><path d="M0,0 L10,5 L0,10 Z" fill="#d83242"/></marker>
<marker id="goldArrow" markerWidth="10" markerHeight="10" refX="8" refY="5" orient="auto"><path d="M0,0 L10,5 L0,10 Z" fill="#9b710b"/></marker>
</defs>
<!-- 坐标换算:X=-15..15 映射到 95..665;Z=0..120 映射到 1015..65 -->
<rect x="75" y="35" width="610" height="980" rx="10" fill="#b9cba9" stroke="#73866d" stroke-width="3"/>
<text x="380" y="61" text-anchor="middle" font-size="17" font-weight="700" fill="#263728">红方区域 Z=80~120</text>
<text x="380" y="1000" text-anchor="middle" font-size="17" font-weight="700" fill="#263728">蓝方区域 Z=0~40</text>
<!-- horizontal coordinate guides -->
<g stroke="#91a88b" stroke-width="1" stroke-dasharray="5 7" opacity=".75">
<path d="M95 891 H665"/><path d="M95 728 H665"/><path d="M95 565 H665"/><path d="M95 402 H665"/><path d="M95 239 H665"/><path d="M95 76 H665"/>
</g>
<g fill="#40513e" font-size="12">
<text x="82" y="895" text-anchor="end">Z=15</text><text x="82" y="732" text-anchor="end">Z=35</text><text x="82" y="569" text-anchor="end">Z=55</text><text x="82" y="406" text-anchor="end">Z=75</text><text x="82" y="243" text-anchor="end">Z=95</text><text x="82" y="80" text-anchor="end">Z=115</text>
</g>
<!-- three lanes -->
<path d="M205 935 L205 135" stroke="#68798d" stroke-width="78" stroke-linecap="round"/>
<path d="M380 935 L380 135" stroke="#68798d" stroke-width="78" stroke-linecap="round"/>
<path d="M555 935 L555 135" stroke="#68798d" stroke-width="78" stroke-linecap="round"/>
<g stroke="#aab7c4" stroke-width="3" stroke-dasharray="13 12" opacity=".85">
<path d="M205 935 L205 135"/><path d="M380 935 L380 135"/><path d="M555 935 L555 135"/>
</g>
<text x="205" y="540" text-anchor="middle" font-size="16" font-weight="700" fill="#fff" transform="rotate(-90 205 540)">左路</text>
<text x="380" y="540" text-anchor="middle" font-size="16" font-weight="700" fill="#fff" transform="rotate(-90 380 540)">中路:主要交战区</text>
<text x="555" y="540" text-anchor="middle" font-size="16" font-weight="700" fill="#fff" transform="rotate(90 555 540)">右路</text>
<!-- blue side -->
<rect x="132" y="920" width="146" height="54" rx="9" fill="#3189d7" stroke="#14558d" stroke-width="4"/>
<text x="205" y="943" text-anchor="middle" font-size="16" font-weight="700" fill="#fff">蓝方主城</text>
<text x="205" y="962" text-anchor="middle" font-size="12" fill="#fff">建议 X=0, Z=8</text>
<circle cx="380" cy="870" r="25" fill="#3da5ff" stroke="#14558d" stroke-width="4"/>
<text x="380" y="866" text-anchor="middle" font-size="13" font-weight="700" fill="#fff">蓝方</text><text x="380" y="883" text-anchor="middle" font-size="12" fill="#fff">出生点</text>
<text x="398" y="905" font-size="12" fill="#14558d">X=0, Z=14</text>
<!-- red side -->
<rect x="132" y="76" width="146" height="54" rx="9" fill="#e34b58" stroke="#962b35" stroke-width="4"/>
<text x="205" y="99" text-anchor="middle" font-size="16" font-weight="700" fill="#fff">红方主城</text>
<text x="205" y="118" text-anchor="middle" font-size="12" fill="#fff">建议 X=0, Z=108</text>
<circle cx="380" cy="185" r="25" fill="#ff5c68" stroke="#962b35" stroke-width="4"/>
<text x="380" y="181" text-anchor="middle" font-size="13" font-weight="700" fill="#fff">红方</text><text x="380" y="198" text-anchor="middle" font-size="12" fill="#fff">出生点</text>
<text x="398" y="220" font-size="12" fill="#962b35">X=0, Z=95</text>
<!-- resources -->
<path d="M205 625 C250 625 275 600 300 565" fill="none" stroke="#d9a441" stroke-width="26" stroke-linecap="round"/>
<path d="M555 505 C510 505 485 530 460 565" fill="none" stroke="#d9a441" stroke-width="26" stroke-linecap="round"/>
<path d="M205 625 C250 625 275 600 300 565 M555 505 C510 505 485 530 460 565" fill="none" stroke="#ffe29a" stroke-width="3" stroke-dasharray="9 8"/>
<circle cx="170" cy="655" r="46" fill="#e8b94e" stroke="#895f0a" stroke-width="5"/>
<text x="170" y="650" text-anchor="middle" font-size="15" font-weight="700" fill="#3e2d08">水晶矿</text>
<text x="170" y="670" text-anchor="middle" font-size="12" fill="#3e2d08">X=-7, Z=45</text>
<circle cx="590" cy="475" r="46" fill="#e8b94e" stroke="#895f0a" stroke-width="5"/>
<text x="590" y="470" text-anchor="middle" font-size="15" font-weight="700" fill="#3e2d08">混沌之门</text>
<text x="590" y="490" text-anchor="middle" font-size="12" fill="#3e2d08">X=7, Z=75</text>
<!-- battle zone -->
<rect x="120" y="500" width="520" height="130" rx="12" fill="none" stroke="#8c6b50" stroke-width="3" stroke-dasharray="10 8"/>
<text x="380" y="553" text-anchor="middle" font-size="17" font-weight="700" fill="#6b513d">中央交战区 Z≈45~75</text>
<text x="380" y="578" text-anchor="middle" font-size="13" fill="#6b513d">资源点在主路外侧,不堵住中路</text>
<!-- movement arrows -->
<path d="M380 850 L380 690" fill="none" stroke="#1976d2" stroke-width="5" marker-end="url(#blueArrow)"/>
<path d="M380 235 L380 395" fill="none" stroke="#d83242" stroke-width="5" marker-end="url(#redArrow)"/>
<path d="M235 640 L290 585" fill="none" stroke="#9b710b" stroke-width="4" stroke-dasharray="10 7" marker-end="url(#goldArrow)"/>
<path d="M525 490 L470 545" fill="none" stroke="#9b710b" stroke-width="4" stroke-dasharray="10 7" marker-end="url(#goldArrow)"/>
<!-- x axis labels -->
<g fill="#40513e" font-size="12"><text x="95" y="1032" text-anchor="middle">X=-15</text><text x="380" y="1032" text-anchor="middle">X=0</text><text x="665" y="1032" text-anchor="middle">X=15</text></g>
</svg>
<div class="legend">
<div><span class="swatch main"></span><span><strong>灰色:</strong>三条纵向路线。单位从主城出生后有较长行军距离。</span></div>
<div><span class="swatch resource"></span><span><strong>黄色:</strong>公共资源点,放在主路外侧,不堵住直攻主城的路线。</span></div>
<div><span class="swatch blue"></span><span><strong>蓝色:</strong>蓝方从下向上推进。</span></div>
<div><span class="swatch red"></span><span><strong>红色:</strong>红方从上向下推进。</span></div>
<div><span class="swatch boundary"></span><span><strong>虚线框:</strong>中央交战和资源争夺区域。</span></div>
<div class="good"><strong>阅读方法:</strong>地图越往上 Z 越大。资源点坐标写在圆点内部,主城和出生点坐标写在对应标注中。</div>
</div>
</div>
</section>
<section class="panel">
<h2>建议坐标表</h2>
<table>
<thead><tr><th>对象</th><th>建议世界坐标</th><th>作用</th></tr></thead>
<tbody>
<tr><td>蓝方主城</td><td class="coords">(0, 0, 8)</td><td>蓝方防守核心</td></tr>
<tr><td>蓝方出生点</td><td class="coords">(0, 0, 14)</td><td>出生后先行军约 30 米再进入资源/交战区域</td></tr>
<tr><td>水晶矿</td><td class="coords">(-7, 0, 45)</td><td>左侧公共资源,主路外侧</td></tr>
<tr><td>混沌之门</td><td class="coords">(7, 0, 75)</td><td>右侧公共资源,主路外侧</td></tr>
<tr><td>红方出生点</td><td class="coords">(0, 0, 95)</td><td>出生后先行军约 20 米再进入交战区域</td></tr>
<tr><td>红方主城</td><td class="coords">(0, 0, 108)</td><td>红方防守核心</td></tr>
</tbody>
</table>
<p class="note">这是一套“地图长度约 100~120、宽度约 20~30”的示意坐标,不是要求你现在立即修改场景。先按图确认你想要的战略关系,再落地移动物体和调整 NavMesh。</p>
</section>
<section class="panel">
<h2>相机只改 Z 轴范围的位置</h2>
<p>选中 Hierarchy 的 <code>Main Camera</code>,在 Inspector 找到 <code>CameraFollow &gt; 边界限制</code>:</p>
<table>
<thead><tr><th>字段</th><th>当前值</th><th>含义</th></tr></thead>
<tbody>
<tr><td><code>Min Z</code></td><td class="coords">-30</td><td>相机允许移动到的最低 Z</td></tr>
<tr><td><code>Max Z</code></td><td class="coords">91</td><td>相机允许移动到的最高 Z</td></tr>
<tr><td><code>Orthographic Size</code></td><td>另行设置</td><td>镜头远近和可见范围,不属于 Z 轴边界</td></tr>
</tbody>
</table>
<p>如果地图纵向扩大到 Z=108,至少要把 <code>Max Z</code> 调到能覆盖红方主城附近,例如 <code>115</code>。如果只想限制镜头移动范围,改 <code>Min Z / Max Z</code>;不要用它们来解决单位太小的问题。</p>
</section>
</main>
</body>
</html>