两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 |
技术:精确数据 [2023/12/11 23:00] – [向日葵] OTZzzz | 技术:精确数据 [2024/10/28 15:58] (当前版本) – 小文233 |
---|
| |
/* 以上为所有页面共用的排版格式,请勿删除。 */ | /* 以上为所有页面共用的排版格式,请勿删除。 */ |
| |
| |
| ~~SNIPPET_O1730431940~~snippet:优秀条目~~ |
| {{tag>[优秀条目]}} |
| <WRAP center round tip note> |
| 经OP鉴定,本词条内容清晰,排版优美,是值得参考的优秀范例。 |
| </WRAP> |
| ~~SNIPPET_C~~snippet:优秀条目~~ |
| |
| |
~~SNIPPET_C~~snippet:通用排版~~ | ~~SNIPPET_C~~snippet:通用排版~~ |
| |
<WRAP center round help note> | <WRAP center round help note> |
以下内容涉及较多精确数据,除非确信某处有误,否则请**谨慎修改**。 | 以下内容涉及较多精确数据,除非确信某处有误,否则**请勿修改**。 |
</WRAP> | </WRAP> |
| |
* 植物/僵尸坐标:以游戏内存值为准,单位px | * 植物/僵尸坐标:以游戏内存值为准,单位px |
* 坐标轴原点为1-1格左上角,↓→为正方向 | * 坐标轴原点为1-1格左上角,↓→为正方向 |
* 判定:以游戏内调试模式为准 | * 绘制判定区域时,需将坐标轴原点平移至可见画面左上角,以大致符合游戏内调试模式的视觉逻辑。若仅进行判定计算,无需考虑这一点 |
* 坐标轴原点为可视区左上角((该坐标系最先由[[人物:不在宝前]]在[[https://tieba.baidu.com/p/6054349816|【补充贴】部分判定范围的计算方法]]中正式提出,优点在于可以直接通过内存值加减得到判定范围)),↓→为正方向 | |
* 时间:以游戏最小时间单位,单位cs | * 时间:以游戏最小时间单位,单位cs |
| |
==== 判定计算 ==== | ==== 判定计算 ==== |
[{{ :技术:pasted:20221218-100348.png?250|游戏内圆的实际判定范围}}] | [{{ :技术:pasted:20221218-100348.png?250|游戏内圆的实际判定范围}}] |
内存值中存在16位浮点数,但几乎所有判定计算时都会向零取整(即抹去小数部分)。圆的判定是''(Δx)^2+(Δy)^2<nowiki><=</nowiki>R^2'',其中''(Δx)''、''(Δy)''均以此法取整,因此相应的圆不是一般画图软件出来的圆,判定圆图形如右。 | 内存值中存在16位浮点数,但所有判定计算时都会向零取整(即抹去小数部分)。圆的判定是''(Δx)^2+(Δy)^2<nowiki><=</nowiki>R^2'',其中''(Δx)''、''(Δy)''均以此法取整,因此相应的圆不是一般画图软件出来的圆,判定圆图形如右。 |
<WRAP clear/> | <WRAP clear/> |
| |
====场景边界==== | ====场景边界==== |
| |
^ 名称 ^ 范围 ^ 含义 | | * 僵尸可伤: |
| 伤害区 | ''-50~800'' | 在此范围外,僵尸不可伤(寒冰菇、三叶草除外) | | * 防御域左端''≤800'' |
| 触车区 | ''-20~28'' | 僵尸触发小推车的范围 | | * 僵尸进家: |
| 警戒区 | ''0~800'' | 大部分植物仅对此范围内的僵尸开火 | | * 橄榄、冰车、投篮:''x≤-175'' |
| 进家线 | ''%%<-21%%'' | 大部分僵尸的进家判定线 | | * 撑杆、巨人:''x≤-150'' |
| * 舞王、伴舞、潜水:''x≤-130'' |
| * 其它:''x≤-100'' |
====植僵坐标==== | ====植僵坐标==== |
| |
^5|40,510|120,490|200,470|280,450|360,430|440,410|520,410|600,410|680,410| | ^5|40,510|120,490|200,470|280,450|360,430|440,410|520,410|600,410|680,410| |
| |
====地形图==== | |
<WRAP centerimgbox> | |
[{{ :技术:pasted:ne.jpg?direct&600 |前院地形图}}]</WRAP> | |
<WRAP centerimgbox> | |
[{{ :技术:pasted:fe.jpg?direct&600 |后院地形图}}]</WRAP> | |
<WRAP centerimgbox> | |
[{{ :技术:pasted:me.jpg?direct&600 |屋顶地形图}}]</WRAP> | |
| |
注: | |
* 两种线有重合时,重合段用两者颜色相间的线表示 | |
* 白线为坐标轴,x轴向右为正,y轴向下为正 | |
* 紫色和暗品红色为各控制格的边框 | |
* 绿线为可见区的边界 | |
* 右红线为伤害区和警戒区的右界——若僵尸防御域都在其右方则无敌且不被当作目标 | |
* 蓝线为警戒区的左界——若僵尸防御域都在其左方则不被当作目标 | |
* 黄竖线为碰车区的边界 | |
* 左红线为屋外区的左界——若僵尸防御域都在其左方则其进屋 | |
* 黄横线或斜线为僵尸基准轨迹,没有纵向偏移且正常前进的僵尸坐标在其上 | |
* 绿十字为植物基准点,通常植物坐标在那些位置 | |
| |
===== 植物概览 ===== | ===== 植物概览 ===== |
</callout> | </callout> |
|<100% 7em>| | |<100% 7em>| |
^ 植物 ^触发 ^触发特判 ^命中 ^命中特判 | | ^ 植物 ^ 触发 ^ 触发特判 ^ 命中 ^ 命中特判 ^ |
| 樱桃炸弹 | | |圆心''(x+40,y+40)'',半径''115'' | | | | 樱桃炸弹 | | | 圆心''(x+40,y+40)'',半径''115'' | | |
| 土豆地雷 |''x~+55'' |对正在啃的''左右各伸30''\\ 对跳后撑杆''左缩40*(1+N)'',N为比该撑杆编号小的跳后撑杆数 |圆心''(x+20,y+40)'',半径''60'' | | | | 土豆地雷 | ''x~+55'' | 对正在啃的''左右各伸30''\\ 对所有僵尸''左缩40*N'',N为编号小于等于该僵尸的跳后撑杆数 | 圆心''(x+20,y+40)'',半径''60'' | | |
| 大嘴花 |''x+80~+120'' |对正在啃的''左右各伸60''\\ 对反向矿''左缩20'' |范围内编号最小的僵尸 | | | | 大嘴花 | ''x+80~+120'' | 对正在啃的''左右各伸60''\\ 对所有僵尸''左缩20*N'',N为编号小于等于该僵尸的反向矿工数 | 范围内编号最小的僵尸 | | |
| 窝瓜 |''x+20~+135'' |对正在啃的''右伸40''\\ 对跳后撑杆、海豚、橄榄、小鬼''左伸60''\\ 对反向矿、雪人''左伸70'',正在啃再''左伸40''\\ ''窝瓜x-118≤奔跑撑杆x≤窝瓜x-17''时触发窝瓜 |压区跨度''43'' |对橄榄''左右各伸20'' | | | 毁灭菇 | | | 圆心''(x+40,y+40)'',半径''250'' | | |
| 缠绕海草 |''x~+80'' | |范围内编号最小的僵尸 | | | | 窝瓜 | ''x+20~+135'' | 对正在啃的''右伸40''\\ 对跳后撑杆、海豚、橄榄、小鬼''左伸60''\\ 对反向矿、雪人''左伸70'',正在啃再''左伸40''\\ ''窝瓜x-118≤奔跑撑杆x≤窝瓜x-17''时触发窝瓜 | 压区跨度''43'' | 对橄榄''左右各伸20'' | |
| 普通植物向右 |''x+60''| |(取整后)坐标相同取小编号,否则取左坐标 | | | | 缠绕海草 | ''x~+80'' | | 范围内编号最小的僵尸 | | |
| 裂荚射手向左 |''x+16'' | | | | | | 普通植物向右 | ''x+60'' | | (取整后)坐标相同取小编号,否则取左坐标 | | |
| 杨桃向左 |''x-3'' | | | | | | 裂荚射手向左 | ''x+16'' | | | | |
| 反向双发 |''x'' | | | | | | 杨桃向左 | ''x+40''(判定僵尸防御域右界) | | | | |
| 小喷菇 |''x+60~+290'' | |''x+40~+323'' | | | | 反向双发 | ''x'' | | | | |
| 海蘑菇 |同上 | |''x+45~+328'' | | | | 火炬树桩 | 右向非三线豌豆''x-20''过火;\\ 三线中间豌豆''x-22''过火;\\ 左向豌豆''x+45''过火;\\ 三线上下豌豆''x-22''过火;\\ 过火前后子弹坐标无变化(上面数据均在静态环境\\ 下测定,豌豆植物摇头以及子弹以3.33为最小单位\\ 位移会使过火实际为一个范围) | | 豌豆、冰豆命中''x+25~+80'' \\ 火豆命中''x+40~+70'' | 火炬在豌豆右列时,豌豆与火炬距离(坐标差)小于''56''时在过火前将不命中僵尸(卡火炬“特性”的由来);火炬在同列或者左列时,火炬编号大则优先过火,豌豆编号大则优先命中僵尸。 | |
| 大喷菇 |''x+60~+400'' | |''x+61~+399'' | | | | 小喷菇 | ''x+60~+290'' | | ''x+40~+323'' | | |
| 忧郁菇 |''x-80~+160'' | |''x-79~+159'' | | | | 大喷菇 | ''x+60~+400'' | | ''x+61~+399'' | | |
| 地刺(王) |''x+20~+50'' | |''x+21~+49'' | | | | 胆小菇害怕 | 圆心''(x,y+20)'',半径''120'' | | | | |
| 胆小菇害怕 |圆心''(x,y+20)'',半径''120'' | | | | | | 海蘑菇 | 同上 | | ''x+45~+328'' | | |
| 磁力菇 |圆心''(x,y+20)'',半径''270'' |对正在啃食的半径''320''(([[https://tieba.baidu.com/p/5760333415|磁力菇对于正在啃食的僵尸的作用范围是半径320像素]])) | | | | | 磁力菇 | 圆心''(x,y+20)'',半径''270'' | 对正在啃食的半径''320''(([[https://tieba.baidu.com/p/5760333415|磁力菇对于正在啃食的僵尸的作用范围是半径320像素]])) | | | |
| 玉米加农炮 | | |圆心为爆炸中心(见下文),半径''115''| | | | 忧郁菇 | ''x-80~+160'' | | ''x-79~+159'' | | |
| | 地刺(王) | ''x+20~+50'' | | ''x+21~+49'' | | |
| | 玉米加农炮 | | | 圆心为爆炸中心(见下文),半径''115'' | | |
| |
=== 命中范围 === | === 命中范围 === |
* 僵尸进入大嘴花的触发范围后,下一厘秒开咬(因为同一厘秒内先计算范围内有没有僵尸,后计算僵尸的运动),再延迟0.70秒咬中,整个咬动作1.05秒,所以咬间隔1.06秒。消化40.00秒,咽2.34秒,所以吞间隔43.40秒 | * 僵尸进入大嘴花的触发范围后,下一厘秒开咬(因为同一厘秒内先计算范围内有没有僵尸,后计算僵尸的运动),再延迟0.70秒咬中,整个咬动作1.05秒,所以咬间隔1.06秒。消化40.00秒,咽2.34秒,所以吞间隔43.40秒 |
| |
命中延迟: | 命中延迟:(([[https://tieba.baidu.com/p/6620690189|各种细节]])) |
* 大喷菇命中延迟0.49s,忧郁菇第一发命中延迟0.74s | ^ 植物 ^ 命中延迟(cs) ^ |
* 地刺命中延迟0.25s,地刺王命中延迟0.30s和0.68s,两次命中间隔0.38s | | 豌豆射手、寒冰射手、仙人掌、裂荚射手(右向) | 34 | |
| | 双发射手、裂荚射手(左向)、反向双发射手 | 25、50 | |
| | 小喷菇、海蘑菇 | 28 | |
| | 大喷菇 | 49 | |
| | 胆小菇 | 25 | |
| | 地刺 | 25 | |
| | 杨桃 | 39 | |
| | 卷心菜投手 | 31 | |
| | 玉米投手 | 29 | |
| | 西瓜投手、冰瓜 | 35 | |
| | 机枪射手 | 32、49、65、82 | |
| | 忧郁菇 | 74、102、130、158 | |
| | 猫尾草 | 31、81 | |
| | 地刺王 | 30、68 | |
| |
子弹类的击中判定: | 子弹类的击中判定: |
* 孢子、星星、卷心菜、玉米粒、黄油 击中右40像素,共41像素; | * 孢子、星星、卷心菜、玉米粒、黄油 击中右40像素,共41像素; |
* 刺击中左25像素,右40像素,共66像素; | * 刺击中左25像素,右40像素,共66像素; |
* 火豌豆击中范围0~+30,溅射范围0~+100; | * 火豌豆击中范围0~+30,溅射范围0~+100;溅射伤害值为 40/溅射僵尸数量,再取整数部分,大于13伤害13,小于1伤害1(([[https://tieba.baidu.com/p/6012199040|火豌豆和西瓜溅射伤害值计算方法]]))((溅射僵尸数量不包括直接击中的僵尸,下同)); |
* 西瓜、冰瓜的击中范围和溅射范围都是右20像素至右80像素,共61像素。 | * 西瓜、冰瓜的击中范围和溅射范围都是右20像素至右80像素,共61像素;溅射伤害值是 574/溅射僵尸数量,再取整数部分,大于26伤害26,小于1伤害1。 |
| |
大喷菇和忧郁菇都是对范围内僵尸同时伤害,发出的孢子只是动画效果。 | 大喷菇和忧郁菇都是对范围内僵尸同时伤害,发出的孢子只是动画效果。 |
[{{ :技术:pasted:20221221-084318.png?350|子弹的发射位置}}] | [{{ :技术:pasted:20221221-084318.png?350|子弹的发射位置}}] |
| |
如图,白色矩形是所在格范围,绿色加号中心是植物坐标点,绿色矩形是受小丑炸的判定范围,也是调试模式显示的范围,蓝色矩形是受啃碾砸的判定范围,橙色是触发范围。 | 如图,<fc #c0c0c0>白色</fc>矩形是所在格范围,<fc #00ff00>绿色</fc>加号中心是植物坐标点,<fc #00ff00>绿色</fc>矩形是受小丑炸的判定范围,也是调试模式显示的范围,<fc #4682b4>蓝色</fc>矩形是受啃碾砸的判定范围,<fc #ffa500>橙色</fc>是触发范围。 |
| |
豌豆射手发出豌豆的初始点很可能与头部晃动有关,图上的豌豆射手嘴上方的红线是发出豌豆的初始坐标点,有20个点。因为豌豆初始点有波动,击中范围也有波动,浅紫色是必定击中范围,黄色矩形是可能击中范围,越往左击中可能越小。(击中范围上下边界随便画的,因为已经画过了当前行的上下边界) | 豌豆射手发出豌豆的初始点很可能与头部晃动有关,图上的豌豆射手嘴上方的<fc #ff0000>红线</fc>是发出豌豆的初始坐标点,有20个点。因为豌豆初始点有波动,击中范围也有波动,<fc #dda0dd>浅紫色</fc>是必定击中范围,<fc #ffff00>黄色</fc>矩形是可能击中范围,越往左击中可能越小。(击中范围上下边界随便画的,因为已经画过了当前行的上下边界) |
<WRAP clear/> | <WRAP clear/> |
<WRAP centerimgbox> | <WRAP centerimgbox> |
</WRAP> | </WRAP> |
| |
| 订正: |
| * 表中跳跳防御域y仅适用于跳跃跳跳,行走跳跳防御域y为''+17~+132''. |
==== 飞跃行为 ==== | ==== 飞跃行为 ==== |
^ 僵尸 ^ 落地时坐标 ^ 备注 | | ^ 僵尸 ^ 落地时坐标 ^ 备注 | |
| |
===== 植僵互动 ===== | ===== 植僵互动 ===== |
| ==== 最早地刺扎车 ==== |
| ^ ^ 9列全扎 ^ 8列全扎 ^ 7列全扎 ^ |
| | 冰车 | 292 | 622 | 1014 | |
| | 篮球 | 428 | - | - | |
| ==== 初次攻击分布 ==== |
| 一个放置充分长时间的发射子弹植物,面对一个早已存在于场上的僵尸,于任何一个时间点,距离其下一次触发__子弹发射倒计时__的时间点(不包含当前时间点)的时长x,服从一个固定的分布律。该分布律只与植物自身的攻击间隔有关,也被称为初次攻击分布。 |
| |
| 该分布__常常被误认为__ ''[1,最大攻击间隔] ''的均匀分布。 |
| |
| 射击类植物(攻击间隔1.36s~1.50s)的初次攻击分布: |
| |
| $$P\{X=x\}=\begin{cases}\frac{1}{143}&,1\le x\le 136\\ \frac{151-x}{2145}&,137\le x\le 150\end{cases}$$ |
| |
| <WRAP centerimgbox> |
| [{{:技术:分布律.png?500|射击类植物初次攻击分布律直观图像}}] |
| </WRAP> |
| |
| 以射击类植物为例,有时候初次攻击分布表述为“于0cs放置的僵尸最早触发__子弹发射倒计时__的时长(2cs~151cs)”对应的概率分布,在这个表述下原分布横坐标1~150改为2~151。 |
| |
| 有时候初次攻击分布表述为“距离其下一次触发__子弹发射倒计时__的时间点(包含当前时间点)的时长(0cs~149cs)”对应的概率分布,在这个表述下原分布横坐标1~150改为0~149。 |
| |
| 投掷类植物(攻击间隔2.86s~3.00s)的初次攻击分布: |
| |
| $$P\{X=x\}=\begin{cases}\frac{1}{293}&,1\le x\le 286\\ \frac{301-x}{4395}&,287\le x\le 300\end{cases}$$ |
| |
| 忧郁菇(攻击间隔1.86s~2.00s)的初次攻击分布: |
| |
| $$P\{X=x\}=\begin{cases}\frac{1}{193}&,1\le x\le 186\\ \frac{201-x}{2895}&,187\le x\le 200\end{cases}$$ |
==== 蹦极偷曾概率 ==== | ==== 蹦极偷曾概率 ==== |
| |
没被抓的忧郁菇击中12次的概率,冰冻4.00秒10.3%、冰冻4.01秒9.8%。 | 没被抓的忧郁菇击中12次的概率,冰冻4.00秒10.3%、冰冻4.01秒9.8%。 |
| |
假设寒冰菇冰冻4~6秒均匀分布,冰冻4.00秒概率是1/201,被偷概率 | 假设寒冰菇冰冻4~6秒均匀分布,冰冻4.00秒概率是1/201。 |
| |
| 根据初始攻击分布,触发与蹦极落地同时概率是1/193,蹦极迟0.01s落地相当于蹦极落地前0.01s忧郁菇触发,概率同样是1/193。 |
| |
| 被偷概率 |
<code> | <code> |
1/200 * 1/15 * 1/15 * 1/15 * 1/201 * 0.103 | 1/193 * 1/15 * 1/15 * 1/15 * 1/201 * 0.103 |
+ 1/200 * 1/15 * 1/15 * 1/15 * 1/201 * 0.103 | + 1/193 * 1/15 * 1/15 * 1/15 * 1/201 * 0.103 |
+ 1/199 * 1/15 * 1/15 * 1/15 * 1/201 * 0.103 | + 1/193 * 1/15 * 1/15 * 1/15 * 1/201 * 0.103 |
+ 1/200 * 1/15 * 1/15 * 1/15 * 1/201 * 0.103 | + 1/193 * 1/15 * 1/15 * 1/15 * 1/201 * 0.103 |
+ 1/200 * 1/15 * 1/15 * 1/15 * 1/201 * 0.103 | + 1/193 * 1/15 * 1/15 * 1/15 * 1/201 * 0.103 |
+ 1/200 * 1/15 * 1/15 * 1/15 * 1/201 * 0.098 | + 1/193 * 1/15 * 1/15 * 1/15 * 1/201 * 0.098 |
</code> | </code> |
| |
结果大约十亿分之4.5,小到可以忽略不计。 | 结果大约十亿分之4.7,小到可以忽略不计。 |
| |
==== 地刺王对巨人的伤害 ==== | ==== 地刺王对巨人的伤害 ==== |
|:::| 吃到再次开咬间隔 | 4340 | | |:::| 吃到再次开咬间隔 | 4340 | |
| 墓碑吞噬者 | 吞碑 | 448~471((均匀随机)) | | | 墓碑吞噬者 | 吞碑 | 448~471((均匀随机)) | |
| 寒冰菇 | 冰冻+减速总时长 | 2000 | | | 寒冰菇 | 冰冻+减速总时长 | 2000((由于同一cs里先结算植物后结算僵尸,实际效果为1999)) | |
|:::| 冻结水面和云朵 | 300 | | |:::| 冻结水面和云朵 | 300 | |
|:::| 一次冰冻((即僵尸未减速时受冰的情况)) | 400~600 | | |:::| 一次冰冻((即僵尸未减速时受冰的情况)) | 400~600((由于同一cs里先结算植物后结算僵尸,实际效果为399~599)) | |
|:::| 二次冰冻((即僵尸已减速时受冰的情况)) | 300~400 | | |:::| 二次冰冻((即僵尸已减速时受冰的情况)) | 300~400((由于同一cs里先结算植物后结算僵尸,实际效果为299~399)) | |
| 窝瓜 | 触发到起跳((起跳时若原目标消失,重新索敌)) | 126 | | | 窝瓜 | 触发到起跳((起跳时若原目标消失,重新索敌)) | 126 | |
|:::| 触发到命中 | 182 | | |:::| 触发到命中 | 182 | |