feat(gameplay): 添加水晶矿资源产出系统和改进AI卡组管理 - 实现水晶矿占领后的能量资源产出功能,包括manaInterval和manaAmount配置 - 添加敌方AI的能量管理系统,支持通过AddMana方法增加能量 - 实现AI卡组轮转机制,包含手牌管理和抽卡队列功能 - 优化单位AI的目标选择和战斗逻辑,修复目标切换问题 - 水晶矿现在可以按设定间隔为所属阵营提供能量资源 -
162 lines
12 KiB
HTML
162 lines
12 KiB
HTML
<!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 > 边界限制</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>
|