技术:精确数据

这是本词条的历史版本!该页面包含旧版本的快捷文本。
是否自动将快捷文本同步至最新版本?是 


本条目部分或全部内容搬运自外部资源。

遵守CC BY-SA 4.0协议,部分内容可能有所改动。

以下内容涉及较多精确数据,除非确信某处有误,否则请谨慎修改

精确数据

本条目收录了由高精度测量或反汇编得到的精确游戏内时间、空间数据,包括但不限于植物、僵尸、子弹、场地等的机制与特性。

不要强行认字

本词条的内容不是为初学者设计的。想要学习植物与僵尸的基础知识,请跳转至植物图鉴僵尸图鉴

本条目使用PVZ圈最常用的数据体系,即:

  • 植物/僵尸坐标:以游戏内存值为准,单位px
    • 坐标轴原点为1-1格左上角,↓→为正方向
  • 判定:以游戏内调试模式为准
    • 坐标轴原点为可视区左上角1),↓→为正方向
  • 时间:以游戏最小时间单位,单位cs
  • 战场可见区左端为x=-40,上端为y=-80
  • 前院1-1豌豆射手x=40, y=80
  • 前院1路进家普僵x=-100, y=50
游戏内圆的实际判定范围

内存值中存在16位浮点数,但几乎所有判定计算时都会向零取整(即抹去小数部分)。圆的判定是(Δx)^2+(Δy)^2<=R^2,其中(Δx)(Δy)均以此法取整,因此相应的圆不是一般画图软件出来的圆,判定圆图形如右。

以僵尸为例,可从内存中读取下列判定相关信息:

内存地址2) 意义
[+8C]=36 防御范围横向偏移
[+90]=0 防御范围纵向偏移
[+94]=42 防御范围横向宽度
[+98]=115 防御范围纵向高度
[+9C]=20 攻击范围横向偏移
[+A0]=0 攻击范围纵向偏移
[+A4]=50 攻击范围横向宽度
[+A8]=115 攻击范围纵向高度

左行僵尸的判定范围:

  • 左边界=横坐标+横向偏移,右边界=左边界+横向宽度
  • 上边界=纵坐标+纵向偏移,下边界=上边界+纵向高度

右行僵尸的判定范围:

  • 右边界=横坐标+120-横向偏移
  • 左边界=右边界-横向宽度

例如,x=650,y=135的普通僵尸,防御范围x:686~728,y:135~250,攻击范围x:670~720

名称 范围 含义
伤害区 -50~800 在此范围外,僵尸不可伤(寒冰菇、三叶草除外)
触车区 -20~28 僵尸触发小推车的范围
警戒区 0~800 大部分植物仅对此范围内的僵尸开火
进家线 <-21 大部分僵尸的进家判定线
场合行号僵尸y植物y
前院 1 50 80
2 150 180
3 250 280
4 350 380
5 450 480
后院 1 50 80
2 135 165
3 220 250
4 305 335
5 390 420
6 475 505
屋顶 1 40 见下
2 125
3 210
4 295
5 380

屋顶植物:

(x,y)1(列)23456789
1(行)40,170120,150200,130280,110360,90440,70520,70600,70680,70
240,255120,235200,215280,195360,175440,155520,155600,155680,155
340,340120,320200,300280,280360,260440,240520,240600,240680,240
440,425120,405200,385280,365360,345440,325520,325600,325680,325
540,510120,490200,470280,450360,430440,410520,410600,410680,410
前院地形图
后院地形图
屋顶地形图

注:

  • 两种线有重合时,重合段用两者颜色相间的线表示
  • 白线为坐标轴,x轴向右为正,y轴向下为正
  • 紫色和暗品红色为各控制格的边框
  • 绿线为可见区的边界
  • 右红线为伤害区和警戒区的右界——若僵尸防御域都在其右方则无敌且不被当作目标
  • 蓝线为警戒区的左界——若僵尸防御域都在其左方则不被当作目标
  • 黄竖线为碰车区的边界
  • 左红线为屋外区的左界——若僵尸防御域都在其左方则其进屋
  • 黄横线或斜线为僵尸基准轨迹,没有纵向偏移且正常前进的僵尸坐标在其上
  • 绿十字为植物基准点,通常植物坐标在那些位置
植物 x偏移 y偏移
小喷菇/海蘑菇 -5~+4 -3~+2
阳光菇 -5~+4 -5~+4

伸与缩

伸:指“延伸”,例如“左伸X”代表左限向左延伸X。

缩:指“收缩”,例如“右缩X”代表右限向左收缩X。

植物 触发 触发特判 命中 命中特判
樱桃炸弹 圆心(x+40,y+40),半径115
土豆地雷 x~+55 对正在啃的左右各伸30
对跳后撑杆左缩40*(1+N),N为比该撑杆编号小的跳后撑杆数
圆心(x+20,y+40),半径60
大嘴花 x+80~+120 对正在啃的左右各伸60
对反向矿左缩20
范围内编号最小的僵尸
窝瓜 x+20~+135 对正在啃的右伸40
对跳后撑杆、海豚、橄榄、小鬼左伸60
对反向矿、雪人左伸70,正在啃再左伸40
窝瓜x-118≤奔跑撑杆x≤窝瓜x-17时触发窝瓜
压区跨度43 对橄榄左右各伸20
缠绕海草 x~+80 范围内编号最小的僵尸
普通植物向右 x+60 (取整后)坐标相同取小编号,否则取左坐标
裂荚射手向左 x+16
杨桃向左 x-3
反向双发 x
小喷菇 x+60~+290 x+40~+323
海蘑菇 同上 x+45~+328
大喷菇 x+60~+400 x+61~+399
忧郁菇 x-80~+160 x-79~+159
地刺(王) x+20~+50 x+21~+49
胆小菇害怕 圆心(x,y+20),半径120
磁力菇 圆心(x,y+20),半径270 对正在啃食的半径3203)
玉米加农炮 圆心为爆炸中心(见下文),半径115

命中范围

直线攻击类植物的命中范围

紫色竖线及右侧是触发区域,豌豆类的红色区域是必定击中范围,黄色区域是可能击中范围(越左击中可能越小),三线射手对三行的击中范围相同,仙人掌的黄色区域是飞行气球的击中范围。 4)

短程攻击类植物的命中范围

紫色竖线是触发范围边界,红色竖线是击中范围边界,大喷菇的击中范围是触发范围左右各缩1。 如果小喷菇和海蘑菇的横坐标有偏移,触发范围和击中范围也会随着偏移。

投掷攻击类植物的命中范围

玉米投手左侧的黄色区域表示黄油能击中、玉米粒不能击中。

投掷类子弹

子弹初始速度

投手植物在发出子弹时,再查找范围内最近的僵尸,来确定子弹的初始速度,飞行路径在发出时就确定了。5)

  • 水平方向初始速度:( 僵尸防御左边界横坐标 - 9 - 僵尸速度参数6) * 50 - 子弹初始横坐标 ) / 120
  • 竖直方向初始速度:-7 + ( 僵尸防御上边界纵坐标 - 子弹初始纵坐标 ) / 120

其中,僵尸边界坐标只取整数部分,僵尸的“速度参数”是僵尸内存[+34]数据。如果僵尸被寒冰菇冻结或者被黄油定身,计算时去掉“速度参数”部分。如果僵尸只是被减速或者在啃食,计算方法不变。

如果子弹发出时,范围内没有僵尸:

  • 水平初速 = ( 705 - 子弹初始横坐标 ) / 120
  • 竖直初速 = -7

水平初速下限是1/3 ,如果水平初速的计算结果小于1/3 ,水平初速设为1/3

在平地场合,投手子弹的纵坐标不变,竖直速度影响的是高度,高度向上为负,向下为正。

高度>-30时,有僵尸就击中;如果没有僵尸,高度>80时拍地。

飞行用时
平地投掷类子弹飞行用时

在平地上,如果从头顶击中僵尸,子弹飞行时间与僵尸植物的距离无关。

表格中的僵尸指发出子弹时找到的僵尸,与击中的僵尸无关。

飞行时间是发出子弹到击中僵尸的时间,总时间是开始投掷到击中僵尸的时间。

攻击种类 植物种类 判定范围
啃碾砸 普通植物 x+30~+50
高坚果 x+30~+70
南瓜 x+20~+80
玉米加农炮(炮尾) x+20~+120
玉米加农炮(炮头) x-60~+40
小丑爆炸 所有 x左右各伸20, y=0~+80

植物攻击间隔准确数据:7)

  • 大部分植物攻击间隔是1.36s~1.50s
  • 投掷类植物攻击间隔是2.86s~3.00s
  • 忧郁菇的攻击间隔是1.86s~2.00s
  • 地刺和地刺王的攻击间隔是1.01s
  • 僵尸进入大嘴花的触发范围后,下一厘秒开咬(因为同一厘秒内先计算范围内有没有僵尸,后计算僵尸的运动),再延迟0.70秒咬中,整个咬动作1.05秒,所以咬间隔1.06秒。消化40.00秒,咽2.34秒,所以吞间隔43.40秒

命中延迟:

  • 大喷菇命中延迟0.49s,忧郁菇第一发命中延迟0.74s
  • 地刺命中延迟0.25s,地刺王命中延迟0.30s和0.68s,两次命中间隔0.38s

子弹类的击中判定:

  • 击中行是当前所在行,击中的横向范围是上一厘秒的范围,可以理解为先改变纵坐标,确定所在行,根据横坐标伤害僵尸,再改变横坐标。
  • 豌豆(包括左向)击中范围左15像素,右40像素,共56像素;
  • 孢子、星星、卷心菜、玉米粒、黄油 击中右40像素,共41像素;
  • 刺击中左25像素,右40像素,共66像素;
  • 火豌豆击中范围0~+30,溅射范围0~+100;
  • 西瓜、冰瓜的击中范围和溅射范围都是右20像素至右80像素,共61像素。

大喷菇和忧郁菇都是对范围内僵尸同时伤害,发出的孢子只是动画效果。

子弹的判定范围

如图,绿色加号中心是豌豆当前坐标点,红色加号中心是豌豆上一厘秒坐标点,红色矩形是当前伤害范围,绿色矩形是下一厘秒伤害范围。

豌豆射手刚种下时,内存[+58]是范围在0~150的一个随机数,每厘秒减一,减到0时,重置为136~150中的一个随机数,如果触发范围内有僵尸,把内存[+90]值设为35,每厘秒减1,在减到1的那一厘秒,先判断这个值等于2发出豌豆,再把值减到1。

子弹的发射位置

如图,白色矩形是所在格范围,绿色加号中心是植物坐标点,绿色矩形是受小丑炸的判定范围,也是调试模式显示的范围,蓝色矩形是受啃碾砸的判定范围,橙色是触发范围。

豌豆射手发出豌豆的初始点很可能与头部晃动有关,图上的豌豆射手嘴上方的红线是发出豌豆的初始坐标点,有20个点。因为豌豆初始点有波动,击中范围也有波动,浅紫色是必定击中范围,黄色矩形是可能击中范围,越往左击中可能越小。(击中范围上下边界随便画的,因为已经画过了当前行的上下边界)

豌豆各位置发射频率,颜色越深表示出现次数越多
晃动路线图,每个线段用时一样,线段内匀速
植物触发攻击数据

红色字表示直接伤害。子弹初始点是相对于植物坐标基点的偏移,未标xy的是x偏移,因为y偏移不影响击中范围,只影响显示位置。

香蒲

香蒲的初始击中范围如右图所示。

白色矩形是格范围,蓝色加号是植物坐标点,黑色加号是刺的初始点,这个点属于上一行,红色矩形是初始击中范围。刺的初始方向是向右,范围右边很容易击中,其它地方都需要绕弯。

飞行速度

直线类子弹的飞行速度是每厘秒3.33像素,这个3.33只有两位小数,不是10/3。

星星的斜前方向与水平方向成30度角,横坐标每厘秒加2.883865,纵坐标每厘秒减或加1.665。

香蒲的刺飞行速度是每厘秒2像素。

同一厘秒的计算顺序

同一厘秒内的执行顺序是:发出子弹或范围伤害、植物触发、僵尸移动、子弹伤害。

僵尸进入地刺(王)的触发范围后,下一厘秒地刺(王)触发。倒计时到0后,下一厘秒再变为100,所以地刺(王)的攻击间隔是1.01s。

子弹发出的同一厘秒,就会移动,存在时间为1,击中初始范围(移动前的范围)。

子弹在内存中的坐标是以界面左上角为起点的。

仙人掌

地面状态的仙人掌对气球是实时检测的,气球进入范围的下一厘秒,仙人掌开始伸长,伸长过程中[+58]正常倒计时,到0时不改[+90],伸长过程1.25s,伸长结束时,[+58]重置,[+90]=23,当[+90]=1时,发出尖刺,x偏移+53。发刺动作结束时,如果范围内没有飞行的气球,仙人掌开始缩短,持续1.09s,过程中不触发([+58]到0时不改[+90])。

仙人掌打气球经常是这样的:第2发刺是空中的,到达时气球僵尸已落地,打不中,下一个倒计时结束时仙人掌正在缩短,不发刺。击中气球与本体的间隔超过了4秒。

不同植物晃动时间不同,同一个植物晃动时间固定,状态改变可能会改变晃动时间。晃动时间指完成整个动作的时间,例如从最左到最右再到最左8)

以下是晃动时间统计(单位:秒),数字中小数部分有四五位的是循环小数。

植物 最小晃动间隔 最大晃动间隔 备注
豌豆射手、寒冰射手、双发射手、三线射手
裂荚射手、金盏花、机枪射手
1.25 1.6667
向日葵、毁灭菇、双子向日葵 1.6667 2.5
樱桃炸弹 0.9333 1.4
坚果、高坚果 1.13333 1.7 被啃后重置
土豆地雷 0.73333 0.91667
大嘴花 1.6667 2.5 消化中晃动1.06667;吞后固定2.08333
小喷菇、大喷菇、杨桃 1.1333 1.7 攻击后固定1.41667
阳光菇 0.8 1.29) 睡觉时0.66667~1;长大后重置为0.8~1
墓碑吞噬者(一阶段) 不晃动 吞噬共两个阶段,一阶段持续0.47~0.70
墓碑吞噬者(二阶段) 2.3333 2.3333 吞噬分两个阶段,二阶段持续4
魅惑菇、路灯花 1.3333 2
胆小菇 1.0667 1.6 攻击后固定1.3333秒;害怕时1.1秒;僵尸离开再重置为1.0667~1.6
寒冰菇 1.13333 1.7
荷叶 不晃动 随水面浮动,水面浮动周期2
窝瓜 1.2667 1.9
缠绕海草 1.4667 2.2
火爆辣椒 0.86667 1.3
地刺 1.4 2.1 攻击后重置
火炬树桩、南瓜 1.4 2.1
海蘑菇 1.6667 2.5 攻击后固定2.08333
仙人掌 1 1.5 攻击后固定1.25
三叶草 3.3 3.310) 转一圈0.5
磁力菇 1.9333 2.9 睡觉时1.2~1.8;吸附铁器后重置
卷心菜投手、西瓜投手、冰瓜 2.0667 3.1 攻击后固定2.58333
花盆 0.86667 1.3 上面种植植物后不晃动;植物消失后重置
玉米投手、忧郁菇、香蒲 1.2667 1.9 攻击后固定1.58333
咖啡豆 0.6 0.9
大蒜 1 1.5
叶子保护伞 1 1.5 弹起后固定0.6818
吸金磁 3.1333 4.7 吸附钱币后固定3.35714
地刺王 1 1.5 攻击或被砸被碾后重置
玉米加农炮 1.2667 1.9 炮弹装填完成后固定1.58333
植物 眨眼间隔11)
坚果、高坚果、爆炸坚果、巨大坚果 1000~1999
其余会眨眼植物 400~799
未啃食时x<389吸铁桶,啃食时x<447吸铁桶
  • 正常情况下,磁力菇作用范围为半径270像素,但是对于正在啃食的僵尸,作用范围半径会增大到320像素12)
  • “准星”即红叉的中心,单位为整数像素,除以80后得到列数
    • 例如准星x=721的炮,等价于炸9.0125列的炮,等价于AvZ::pao_operator.pao(x, 9.0125)
  • “爆炸中心”即实际爆炸的圆心
    • 非天台场景爆炸中心x=准星x-7, 爆炸中心y=准星同行植物y+40
  • 对于r行c列的梯子南瓜,梯子被炮炸飞的条件是r-1≤准星行数≤r+1,且80*c-113≤准星x≤80*c+126
  • 闪烁亮度由游戏计时除以75的余数决定,余数是0和1时最亮,余数是38时最暗13)
最亮状态
最暗状态
计时和亮度关系图,横轴表示计时,数字是除以75的余数,纵轴表示亮度
僵尸 特殊y 纵向偏移h14)
空中的气球 -30 +25
刚召出的伴舞 -200
150cs内匀增至015)
鸭子 -40
水中的潜水 +10
跳跳 +16
跳跃中再+9~+49
雪橇推行 -10
雪橇乘坐中 +18

攻击范围纵坐标与防御范围的相同,且没有实际作用,所以不列出。16)

灰色表示与普通僵尸相同,浅红色表示与橄榄小鬼等僵尸相同。

僵尸攻防判定偏移与尺寸
僵尸 落地时坐标 备注
撑杆 目标植物x-70
海豚 起跳时自身x-150
跳跳 下次到达最低点时位于目标植物x-60 以速度实现,从而受减速影响
  • 如果僵尸本体血量上限小于500,每cs有20%概率减少1点血量,每秒大约减少2017)
  • 如果僵尸本体血量上限大于等于500,每cs有60%概率减少1点血量,每秒大约减少60

迷你游戏的“僵尸水族馆”关卡中,潜水僵尸初始生命值是200,生命值每秒减10,生命值一定是10的整数倍。18)

生命值小于100(小于等于90)颜色变化(饥饿状态),生命值小于等于100时可以吃脑子,吃脑子后生命值增加200,生命值最多是300。

基础数据

忧郁菇相关:19)

  • 忧郁菇攻击间隔186cs~200cs,15种情况概率相等,第一发击中延迟74cs,二三四发击中间隔28cs

蹦极相关:

  • 蹦极僵尸停留300cs,抓取63cs

实测现象:

  • 忧郁菇触发与蹦极僵尸落下在同一厘秒,忧郁菇不触发
  • 忧郁菇击中与蹦极僵尸开始抓取在同一厘秒,击中有效
  • 没被抓的忧郁菇击中与蹦极僵尸离开在同一厘秒,击中有效

寒冰菇对蹦极僵尸的作用:

  • 下落状态,不受冰冻,只有减速状态,没有减速效果
  • 停留状态,受冰冻,有减速状态,没有减速效果
  • 抓取状态,不受冰冻,如果全程减速,抓取持续1.25秒

计算忧郁菇击中次数概率:

没被抓的忧郁菇各击中次数概率
被抓的忧郁菇各击中次数概率

仅一个蹦极僵尸的情况

  • 没曾被抓,3曾被偷99.8%,4曾被偷77.6%,5曾被偷15%,6曾不被偷;
  • 有曾被抓,3曾必被偷,4曾被偷89.9%,5曾被偷27.7%,6曾被偷0.38%。

这只是一个蹦极僵尸的情况,如果有多个蹦极僵尸,以上击中次数概率不适用。

蹦极僵尸初始高度3000~3150,每厘秒减8,减到0时落下。例如初始高度3001,第375cs高度1,第376cs减到0。蹦极僵尸下落用时3.75~3.94秒,先落下的蹦极僵尸可能先触发忧郁菇,先抓取。

双曾冰杀且被抓一曾时的被偷概率

被抓的忧郁菇只击中9次的时间线

最极限的情况,触发与落地同时,忧郁菇三次触发都间隔2.00秒,寒冰菇冰冻4.00秒。

蹦极在7.00s抓取,忧郁菇第10次击中应该在7.02s,只击中9次。

除了最极限的情况,蹦极僵尸迟0.01s落地,忧郁菇某次触发间隔1.99s,寒冰菇冰冻4.01秒,这5种情况忧郁菇也击中9次,总共6种情况。

没有被抓的忧郁菇最少击中12次,加上寒冰菇的一次伤害,总共22次,没打死蹦极僵尸。

没被抓的忧郁菇击中12次的概率,冰冻4.00秒10.3%、冰冻4.01秒9.8%。

假设寒冰菇冰冻4~6秒均匀分布,冰冻4.00秒概率是1/201,被偷概率

1/200 * 1/15 * 1/15 * 1/15 * 1/201 * 0.103
+ 1/200 * 1/15 * 1/15 * 1/15 * 1/201 * 0.103
+ 1/199 * 1/15 * 1/15 * 1/15 * 1/201 * 0.103
+ 1/200 * 1/15 * 1/15 * 1/15 * 1/201 * 0.103
+ 1/200 * 1/15 * 1/15 * 1/15 * 1/201 * 0.103
+ 1/200 * 1/15 * 1/15 * 1/15 * 1/201 * 0.098

结果大约十亿分之4.5,小到可以忽略不计。

巨人砸地刺王时的判定情况

巨人砸地刺王的条件是巨人的攻击范围与地刺王的防御范围重叠。20)

如图,红色矩形是巨人的攻击范围,绿色矩形是巨人的防御范围,蓝色矩形是地刺王的防御范围,浅紫色矩形是地刺王的触发范围,白色矩形是地刺王的击中范围。

巨人砸地刺王时,地刺王的击中范围与巨人的防御范围没重叠,地刺王不能击中巨人,但是巨人受到20点伤害,同时触发地刺王。

这是某次测试的数据,地刺王在属性倒计时70和32时伤害击中范围内的僵尸,没有伤害巨人。

地刺王与巨人的内存信息
部分不搭梯阵型的小鬼盲点

仅在2列设曾且不给南瓜搭梯,则会出现如右图所示的小鬼盲点。21)

图中,绿色矩形是小鬼的防御范围,黄色竖线是触发区域边界,红色竖线是击中区域边界,小鬼盲点有3像素,其中左边1像素能构建永动曾。

另外有15像素区域,小鬼在冰瓜的击中范围,但不在冰瓜的触发范围。在这15像素内,冰瓜右侧有僵尸触发冰瓜,冰瓜才能击中小鬼。


双子叶植物, 2024/04/23 17:59

建议补充说明一下火树豌豆bug()

请先登录后发表评论 (・ω・)
  • 最后更改: 22月前
  • 小文233 修改