植物大战僵尸吧 关注:556,794贴子:5,057,718

【IZE】关于部分僵尸与植物的相对坐标及判定分析

只看楼主收藏回复

  1楼感谢为IZE体系出力良多的5p、风花镜月、壕君、BVZ。
本专题隶属于IZE理论体系,主要是利用贴吧已有的数据成果,对IZE模式中可能出现或面临的一些情况进行理论分析。专题中部分图片及僵尸由混乱法获得,但尽力保证与实战相符。
限于笔者水平,本专题内容不可能涵盖所有可能的情况,且其中也难免出现错漏之处,请多加指正。
主要参考文献如下:
jsapc的判定专题,将实战图片与理论数据结合的先驱。
  tieba.baidu.com/p/697840380
yxq_bd的数据专题,所有理论数据均出自此专题,部分使用BT修改器进行实际测定以验证。
  tieba.baidu.com/p/732011315


1楼2012-06-08 20:34回复
      首先对几个基本的概念进行阐释,下文中会多次使用。
    【场地】
      IZE体系所在场地基本与NE模式相同,属于前院夜晚型。场地中,纵高一、横宽九(或更多)的长方形称为“行”或“路”,纵高五、横宽一的长方形称为“列”。根据习惯编号,从左到右分别为1至9列,从上到下分别为1至5路。
      IZE每关的固有植物只会分布在1至5列、1至5路的范围内,共计25个植物。IZE中放置僵尸的位置只能在6至9列、1至5路的范围内,共计20个位置。
    【坐标】
      坐标狭义上是指游戏中给每个植物、僵尸设定的某一特定点(可能移动),各种相关效果会随该点所处位置而计算获得;广义上则是指游戏中一切精确的空间型定位数据,包括各种范围及效果的边界条件。
      植物的坐标基本可由其所在行、列直接确定,但小喷有可能存在偏移;僵尸的纵坐标通常由其所在行直接确定(IZE中不会出现可能产生偏移的僵尸种类),横坐标基本为连续变化,但在某一格刚刚放下的僵尸的坐标是固定的。
    【受判定范围、攻击范围、触发范围】
      IZE中,植物会被啃、偷(非修改或混乱条件下不会被砸或碾),僵尸会被打击、吸引、阻挡、秒杀;僵尸可啃咬植物,植物可攻击僵尸。这些效果的产生,是相应攻击范围及受判定范围产生有效重叠的结果。
      除了部分机理过于特殊、尚未阐明的情况之外,各种范围的精确数据已经由前人测得。利用这些数据进行计算,即可用理论解释大部分实战现象,并且对实践进行预测与指导。
    【有效判定】
      有效判定包括两种相互独立的判定条件,其一为“范围重叠”,即作用方的有效攻击范围与受攻击方的受判定范围产生重叠;其二为“行判定”,即作用方的攻击效果,在受攻击方所在的那一行能够生效。
      在二者同时满足的条件下,攻击作用及部分特殊效果才能够生效。


    4楼2012-06-08 20:35
    回复
        以下是部分定义及常用数据,后文中同样会多次引用,并基于其进行计算与分析。只需要掌握平面直角坐标系以及一些坐标系代换、平移的基础知识,即可理解。若有未注明的数据,请参见yxq的专题。
      【基本定义】
        对应于场地的数据,直接读取内存中记录的坐标值,或通过平移换算获得。可见区域左上角坐标(-40,-80),纵向正方向朝下,横向正方向朝右。由于前院、后院、屋顶场地均存在差异,因此后文数据均以前院为准进行换算。
        对应于植物的数据,以植物坐标为原点,纵向基本属于行判定而无需考虑正负,横向正方向朝右。
        对应于僵尸的数据,以僵尸坐标为原点,纵向正方向朝上,横向正方向朝僵尸行走的方向。
      【场地通用数据】
        场地可见范围-40<=x<=760,-80<=y<=520
        处于a行b列的植物坐标:x=80b-40,y=100a-20。
        处于a行的僵尸,y=100a-50;刚刚放在b列的僵尸,x=80b-70(只能放在6至9列,小偷除外)。
        脑子受判定范围x<=-40,攻击范围产生重叠且未进家的僵尸均可啃咬到。进入该范围的撑杆自动变为跳后状态、气球自动落地(IZE里不会出现)。
      【植物通用数据】
        植物受判定范围-30<=x<=10(IZE中无大墙果、南瓜、春哥等存在扩展的植物),纵向为行判定。
        植物攻击效果通常只在所处一行生效(IZE中无跨行灰烬植物)。三线射手每颗子弹均只在相应一行生效;星星纵向及斜向子弹会逐步从一行转移到另一行,但不会同时对两行生效;磁铁吸引效果在所处一行及上下各两行生效;伞叶防空效果在所处行及上下各一行生效,横向则是所在列及左右各一列。
      【僵尸通用数据】
        僵尸受判定范围纵向60>=y>=-55,横向分四种情况:矿工10>=x>=-18,橄榄球10>=x>=-47,小偷左侧80右侧30,其余24>=x>=-18。
        僵尸啃食攻击只在所处一行生效(IZE中无小丑),啃食范围分三种情况:路障、铁桶40>=x>=-10,梯子50>=x>=0(包括搭梯子),其余10>=x>=-10。小偷的偷取只对目标植物有效。
        僵尸的行走速度存在区别,路障、铁桶、被吸出土而向左行走的矿工、跳跃后撑杆的速度较慢,小鬼、梯子、橄榄球、跳跃前撑杆的速度较快(存在细微差别),跳舞中MJ及伴舞的速度不定(整体介于两类之间),正常出土而向右行走的矿工最慢,地下的矿工、退步的MJ最快。


      5楼2012-06-08 20:36
      回复
          以下是对各种实际判定情况的分析,首先给出整体情况,之后会针对各种判定情况给出图解,结合僵尸、植物种类进行分类。
        下图为IZE模式中可能出现的各类僵尸。
          
        各僵尸的坐标、啃食范围、受判定范围如图所示。
          
          由图可见,与普通僵尸相比,小偷、橄榄球受判定的范围更大(其中小偷最大),矿工则略小;梯子、路障、铁桶的啃食范围较大,小鬼、橄榄球、MJ、伴舞、出土矿工、跳后撑杆则略小。
        虽然僵尸的坐标及各种判定范围不够直观,但结合图片建立起数据与动画的换算后,也不难在实战中对部分情况进行分析及预测。


        6楼2012-06-08 20:38
        回复
            【关于普通僵尸及小喷、地刺的判定情况】
          路障、跳后撑杆、橄榄球基本可以代表最常见的三种僵尸类型,小喷、地刺是最常见的攻击范围有限的植物,坚果可以体现植物的受判定范围。
          下图包含相应僵尸及植物判定情况。
            
            从实践可知,撑杆受前方攻击,路障受后方攻击,橄榄球被前后夹击。
          这是僵尸及植物的坐标,以及植物的受判定范围、僵尸的攻击范围。
            
            由于各僵尸都是在自由前进的过程中碰到植物,并停下开啃,因此各僵尸的坐标可以确定,只要僵尸攻击范围与植物受判定范围有1像素重叠即可。由图可见,路障的攻击范围较另外二者更远,因此停留时的坐标靠右。
          这是僵尸的受判定范围,以及植物的攻击范围。
            
            左侧较长的绿条是免费开火后可击中的范围,较粗的红条是能够引发免费开火的范围;右侧的红框代表地刺可击中的范围,两侧各1像素的绿线代表可开火但无法击中的判定范围。中间的黑色长方形是僵尸的受判定范围,产生重叠即代表可受攻击。
          根据计算及图可知,橄榄球的判定真心杯具,判定范围仅仅重叠了1像素,就要被连续攻击了。不过,由于小喷可能产生坐标偏移,如图所示的橄榄球也可能不受小喷攻击;同样,若4列是小喷,橄榄球也有不被地刺扎到的机会,具体可参见5p对矿工法分类专题中的最后一个录像。


          8楼2012-06-08 20:39
          回复
              【关于梯子僵尸的判定情况】
            1路为有梯的梯子僵尸,3路为搭过梯子的梯子僵尸,5路为梯子被打落的梯子僵尸。
              
            这是梯子僵尸的攻击范围及坐标。
              
              根据实践,无论有梯还是无梯,以及梯子的丢失方式(搭梯、被打落、被磁铁吸走),梯子僵尸的攻击判定都是相同的。
            这是梯子僵尸的受判定范围。
              
              梯子僵尸的攻击范围比路障左移10像素,受判定范围则相同。因此,梯子会比普通僵尸更早地啃到植物。同时,梯子僵尸的速度比普通僵尸更快,走过地刺的时间也会更短(虽然啃植物时还是会被其右侧相邻的地刺扎到)。


            11楼2012-06-08 20:45
            回复
                【关于矿工的判定情况】
              1路矿工正常出土后右行,3路矿工被磁铁吸出土后左行,5路矿工正在出土。
                
              这是矿工的攻击范围。
                
                需要说明的是,矿工x<=10时出土,但地下与地上的矿工坐标其实是相同的。
              这是矿工的受判定范围。
                
                矿工属于前小后大类型,受判定范围会随着矿工的走向而改变。矿工出土后站定时,该区域就反转了。
              由于矿工的攻击范围较小,啃咬植物时与植物距离比较近;又因为矿工的受判定范围较小,因此地刺扎不到正在啃相临植物的矿工。


              12楼2012-06-08 20:46
              回复
                  【关于MJ及豌豆射手的判定情况】
                图中取IZE的自然布阵。泥土翻滚与伴舞出土是相对独立的过程,2、4路的伴舞已经啃到了5列植物。
                  
                这是植物的受判定范围与MJ、伴舞的攻击范围。
                  
                  根据BT修改器读内存结果,MJ在5列停步召唤时,横坐标多为359至360范围,可能产生细微波动。
                这是各伴舞的受判定区域,MJ的受判定区域只需平移其一即可,因为会与同列伴舞重叠而未给出。
                  
                  红色区域为分裂射手及寒冰射手的开火范围,封口一侧是子弹发射界限,非封口一侧表示子弹可继续飞行。三线射手可视为相邻三路完全同步攻击的单发射手。
                豌豆子弹的伤害范围比开火范围更大,通常是向发射的反方向延伸30像素。
                  
                  图中2路4列的伴舞被4列的寒冰射手打中而减速,但其受判定范围完全在寒冰射手的开火范围左侧。
                某一坐标的伴舞可在啃咬时不引发分裂射手攻击,但处于攻击状态的分裂射手会导致该位置的伴舞四发全中(1.0版的正向双发bug)。同理,在某一范围内出土的矿工也可以在不引发分裂射手的情况下啃食之。
                此外,1.0版存在火树bug。简单地说,就是与火树左侧相邻的豌豆射手(分裂、寒冰、双发)无法打中处于二者之间的撑杆,但更远的豌豆射手或是跨行的三线射手就不会受此影响。合理地利用这一点,可以让撑杆免去不少麻烦。不过需要注意,穿过撑杆的子弹还是会打中火树右侧的僵尸。


                13楼2012-06-08 20:48
                回复
                    【关于小偷与胆小菇的判定情况】
                  图中的小偷落在3路3列。
                    
                    可以看到,2、3、4路的2列至5列胆小菇缩地,而1列不受影响。
                  这是小偷的受判定范围。
                    
                    小偷横坐标与同列植物相同,纵坐标与同路普通僵尸相同。判定范围是左大右小,横向远宽于普通僵尸,纵向略小于普通僵尸。
                  胆小菇缩地效果的判定范围是矢量圆。图中的4个圆分别对应1路3列、3路1列、3路5列、5路3列的胆小菇,植物坐标及判定圆心均已标明,圆半径120像素。
                    
                    普通植物的实际坐标在植物下方,而判定圆的圆心位于植物左上方(不同植物的偏移有所区别,但都是左上方,胆小菇为左60像素、上40像素),相当于植物的左方。只要二者有重叠部分,判定即可生效。
                  图中只有3路5列的胆小菇判定存在重叠,因此会缩地,1路过高、1列过远、5路过低,所以都无需害怕。其余位置胆小菇的判定同理。
                  关于各种僵尸使胆小菇缩地的情况,可以自行分析。路障、铁桶、梯子、橄榄球只能使面前的1个胆小菇缩地,小鬼、跳后撑杆、MJ、伴舞可以使面前的2个胆小菇缩地(IZE里基本不会在有胆小菇的关卡使用矿工、MJ、梯子)。


                  14楼2012-06-08 20:49
                  回复
                      【关于磁铁与矿工的判定情况】
                    下图由5个实战场景取特征位置拼接而成,通过特殊位点的对应,可以保证完全没有误差。
                      
                    磁铁的判定方式是矢量圆,以磁铁坐标为准,向左60像素再向上40像素的点为圆心,一切满足R<=270的点组成了判定圆的范围。在磁铁正常工作时,只要带有铁器的僵尸所受判定的范围与该圆产生重叠(1像素即可),并且满足行判定(磁铁本身所在行及上下各两行之内),吸引作用就会产生。
                      在铁器被吸引前后,铁桶、橄榄球、小丑、已正常出土矿工的运动情况不会改变,梯子、跳跳的速度会减慢,地下矿工会停滞一段时间后出土左行。
                    下图是3路5列磁铁的实际判定范围,中间的黑条是磁铁自身受判定范围,蓝绿二色表示吸引判定圆覆盖各路的部分。由于两行之外的僵尸不会被影响,判定圆的顶部与底部按照行判定的范围而截去(实际上还是应当包含的,因为跳跳会产生纵向偏移,但在IZE里不需要考虑)。这里要感谢yxq的精确坐标图,直接作图的速度比计算快得多。
                      
                    图中5列磁铁x=360,右侧的5个方块代表磁铁右侧可被吸引的矿工的极限范围,从1路到5路x坐标分别为543、577、580、575、534(经过BT修改器验证,无误)。根据之前对各僵尸判定范围的标注可知,可被吸引的橄榄球极限坐标与矿工相同,铁桶、梯子则还可更向右延展14像素(因为右侧判定大于矿工)。
                    左侧5方块代表磁铁左侧可被吸引的未出土矿工的理论极限范围,从1路到5路x坐标分别为49、15、12、17、58。梯子、铁桶的极限坐标相同,橄榄球向左延伸29像素。若矿工已经出土,则极限坐标应当整体向右平移8像素,因为矿工身后比面前判定大8像素。
                    从图中可知,由于僵尸的纵向判定范围大于一路高度,每个僵尸的判定范围都可纵跨三路。因此,在IZE中,上、下两条蓝色判定范围可以不需要考虑,以磁铁为中心,中间三路只需要考虑中间蓝条,一路之外用绿条即可,其余无视。
                    铁器的吸引顺序目前还没有获得确切结果,如果不考虑不同铁器的先后之别,猜想可能与各僵尸判定范围距离圆心的最小距离有关。从理论上来说,这一距离可简化为僵尸判定范围内某一特征点与圆心的距离。与磁铁同路者为纵坐标与圆心相同的某一点,在磁铁上方者为判定下界限某一点,下方者则为判定上界限某一点(以最近为准)。之后,对各个符合判定要求的僵尸的这一距离进行比较,由此判定实际吸引对象。
                    实战中,磁铁在后场时,控制矿工会比较简单。具体的边界条件,可以将上图进行平移以获得。


                    16楼2012-06-08 20:51
                    回复
                        【关于秒杀植物的判定情况】
                      下图为IZE中的3种秒杀植物:土豆雷、窝瓜、大嘴花。
                        
                        各植物的触发行为均属于行判定,坐标图中的横条只需要考虑宽度即可。
                      以下是各种秒杀植物的触发(启动)判定范围,内容略多,需要分别讲解。
                        
                      以下是土豆雷及窝瓜的伤害判定范围,大嘴花为单体攻击,无需标注。
                        


                      17楼2012-06-08 20:53
                      回复
                          土豆雷:触发后爆炸,产生小范围无差别伤害。判定范围为矢量圆,且遵循行判定,判定圆心为其坐标左移35像素、右移20像素,判定半径55像素。可炸到地下的矿工,但无法影响气球。
                        黑色部分为自身受啃咬判定区(对于未出土的土豆雷比较有效)。
                          蓝色部分为踩踏触发区,僵尸受判定范围与之产生重叠即可触发爆炸。
                          红色部分为啃咬触发区,若处于啃咬状态的僵尸的受判定范围与该范围产生重叠,也可触发。其中,啃咬状态未必要求直接啃咬土豆雷本体,处于特定5像素范围内的僵尸啃咬时可触发土豆雷而不被炸到(IZE里的某些伴舞)。
                          绿色与橙色部分代表左侧对跳跃后的撑杆的触发范围(踩踏及啃咬),右侧的啃咬触发区不变。
                        IZE里的土豆雷都是已经出土的状态,撑杆直接跳过土豆雷后不会触发该土豆雷,也不会啃咬到未出土的土豆雷,正常啃咬状态的撑杆也不可能触发更远的土豆雷。因此,橙色判定范围的实战意义不是很大,绿色倒是比较有用。


                        18楼2012-06-08 20:53
                        回复
                            窝瓜:触发后1.26s起跳,起跳瞬间会在自身的触发判定区内锁定某一目标,再过0.55s压中,在作用范围内产生无差别伤害,全程1.81s。
                          黑色部分为自身受啃咬判定区(除了伴舞、撑杆及部分快速僵尸,通常很难有僵尸能走得这么近)。
                            蓝色部分为普通触发区,僵尸受判定区进入该区域即可触发窝瓜,之后成为窝瓜的目标。
                            右侧红色部分代表触发区在被啃咬时的延伸,在实战中有可能参考。例如,某个伴舞从地下钻出啃到窝瓜,在窝瓜起跳前,这个伴舞被子弹杀死或是被后面的大嘴吃掉,则受判定区与该范围产生重叠的僵尸也可能成为窝瓜的目标(还没走过来的路障铁桶之类)。
                            左侧绿色部分代表触发区对部分特殊僵尸的延伸,小鬼、橄榄球、跳跃后的撑杆、跳跃后的海豚,只要受判定区与该范围产生重叠,也会触发窝瓜。
                            左侧橙色部分代表触发区对向右行走且属于敌方的僵尸的延伸,包括雪人及正常出土的矿工;左侧红色部分为窝瓜被啃咬时,对这两种僵尸的再次延伸。可见,在IZE里,向右的矿工受窝瓜的威胁还是不小的,可被锁定的范围非常大。不过,IZE里不会出现正常向右行走且在窝瓜右侧的矿工,因此右侧的红色范围基本对矿工无影响。
                            左侧黄色部分代表跳跃前的撑杆能够触发窝瓜的范围,完全在窝瓜左侧。可见,在IZE里,跳跃前的撑杆不会从右侧引发窝瓜,也不会被已经触发但忽然失去目标的窝瓜锁定,但跳跃后的撑杆就会被窝瓜锁定(无论跳过的植物是否为窝瓜,而且这个范围非常大)。
                          以上分析比较复杂,仅对IZE中可能遇到的情况总结一下(因为IZE里的窝瓜是一开始就放好的,若在僵尸海里放下窝瓜,可以观察到其它情况):
                            窝瓜不被啃时,普通僵尸进入蓝色部分可触发,小鬼、橄榄球、跳后撑杆进入蓝色、绿色部分可触发,向右矿工进入橙色部分可触发,跳前撑杆不会触发。
                            窝瓜被啃时必定被触发,普通僵尸进入蓝色、右侧红色部分可被锁定,小鬼、橄榄球、跳后撑杆进入蓝色、绿色、右侧红色部分可被锁定,向右矿工进入橙色、左侧红色部分可被锁定,跳前撑杆不被锁定。
                            可见,特种僵尸受锁定的范围会增加,啃咬行为会扩展窝瓜的锁定范围。实战中,最好避免引发窝瓜的那个僵尸在窝瓜起跳前就死亡的情况,否则该路的其它僵尸就有可能受到威胁。
                          窝瓜的坐标在跳跃过程中不断改变,落地瞬间,其横坐标与被锁定的僵尸此刻的横坐标相同(若该僵尸已经死亡,就以其消失前最后时刻的横坐标为准)。以该坐标为中心,向两侧各延展21像素,总共43像素的范围(红色部分)就是窝瓜的伤害范围,只要僵尸的受判定区与该范围产生重叠,就会受到伤害(包括跳跃前的撑杆与海豚,但对气球与矿工无效)。对于橄榄球,这一范围还需要向两侧再扩展20像素(绿色部分)。


                          19楼2012-06-08 20:54
                          回复
                              大嘴花:单体攻击,开火后0.7s咬中,若咬空则1.07s后可再次开咬。若本次开火后成功吞下僵尸,则过43.4s后可消化并再次开咬。即便被其它僵尸触发,大嘴花也不能咬到未跳跃的撑杆。
                            黑色为自身受啃咬判定区,对于IZE里可能出现的各种植物,这一范围都是相同的(地刺除外)。
                              蓝色部分为普通触发区,红色部分为判定区对“处于啃咬状态的僵尸”的扩展。
                              绿色部分为对向右矿工的触发范围,橙色部分为受啃咬时扩展范围。
                            以下是对两个实战情况的理论解释:
                            从场地左侧出土的矿工理论上x=10,站定后横向判定范围-8<=x<=20;1列大嘴花x=40,被向右行走的矿工啃咬时,开火范围左侧极限x>=20。可见,1列的矿工是有可能被1列的大嘴花吃掉的。不过,植物的坐标均为整数,但僵尸的坐标则有可能不是整数(连续性更高),9<x<10的情况可以存在,因此1列矿工还是有不被吃掉的可能。
                            图中紫色部分是左侧大嘴花普通触发区与右侧大嘴花被啃触发区的重叠范围,因此,部分啃到右侧大嘴花的僵尸会同时引发两个大嘴花开火(地下出土的伴舞等)。正常情况下,这样的僵尸会被左侧大嘴花吃掉,而右侧大嘴花会咬空。不过,如果右侧大嘴花的更右侧还有僵尸(有可能处于被啃触发区而非普通触发区),则右侧大嘴花会将目标改为这一僵尸。因此,在处理爆炸主题时,若MJ前方无伴舞却有两个可开火的大嘴花,有可能出现MJ在召唤伴舞后,伴舞及本体都被吃掉的情况。


                            20楼2012-06-08 20:55
                            回复
                                左向的触发情况比较简单,星星本体受啃食则会立即开火,本体未受啃食(套南瓜,但IZE里不会出现)则要求僵尸的受判定区域完全处于某一位置左侧(纵向触发范围的中间线)。鉴于IZE里除撑杆、矿工及伴舞之外,不会出现其它位于星星左侧的僵尸,因此暂未给出图片。
                              之后是纵向的触发情况,规律比较明确。

                                如图所示,星星的纵向触发范围在上下各路均相同,当僵尸的受判定区域包含所在路的某一特定范围(图中紫色粗线,宽3像素),星星即可开火。铁桶的受判定区域可代表绝大多数僵尸,个头过大的橄榄球单独列出。


                              22楼2012-06-08 20:57
                              回复