《我的世界》扫射矢量炮制作图文教程 扫射矢量炮怎么制作
《我的世界》想要制作一个扫射矢量炮并不容易,尤其是对没接触过此方面内容的玩家,今天小编带来“恩氟烷瑞”分享的《我的世界》扫射矢量炮制作图文教程,下面我们一起来学吧。
什么是矢量炮?
矢量炮是一种通过调节xyz各方向对同一格内的tnt的推力大小来对某一固定范围实行定点打击的红石炮
最早的矢量炮是由Dim神触(滚大幕)制作的Templar系列。
矢量炮的分类?
按照xyz轴是否具有可变推力条件
矢量炮分为单线矢量炮(只有一个方向的可变推力,只能实现单线打击)
二维矢量炮(有两个方向的可变推力,能实现平面打击)
三维矢量炮(有三个方向的可变推力,能实现立体打击)。
当然,矢量炮还可以按照常规与非常规分,或者按照地对地,地对空,空对地的分法进行分类,这在之后会有所提及,这里便不细讲了。
什么是扫射矢量炮?
扫射矢量炮是在矢量炮定点打击的基础上,安装附加装置让打击点能够发生自动变化,实现自动扫射的矢量炮。这种附加装置我们称为“扫射火控”。而目前实现扫射的火控形式一共有计数,记点,计算三大类,这在之后会有详细的介绍。
关于发射器
首先是一些大家应该都清楚的,发射器是实体方块,它能够被充能
当发射器被各种方式激活的时候,它能够将它的内容物发射出去
如果发射器已经处于激活状态,那么再给发射器一个红石信号将无法激活它(图中的情况就是,我在最右边放了个红石粉却没有让发射器把水收回)这种无法激活的情况就被称作激活锁定。
| 《我的世界》精华文章推荐 | |||
而发射器对于红石炮的意义就是它能够将TNT以实体的形式发射出来,这样的性质让红石炮的连发成为可能。
接下来就是一些大家可能不知道的,这也是发射器部分的重点
和活塞类似,发射器是有BUD(Block Update Detector,方块更新感应器)的,这意味着它能够像活塞一样接收它上方方块的信号,从而被激活。如果让发射器处于亚稳态,那么此时如果给它一个更新,它就会被激活。
提到发射器的BUD有什么用?这里问大家一个问题,同样是激活3×3的九个发射器,请问是左边的方式好还是右边的方式好?
答案是左边的方式好。为什么?这里补充两个知识
知识点一:
当一种红石元件(不知道怎么描述比较好)处于BUD状态的时候,如果不对它进行更新,那么它所处的状态便不会更改
对于一个发射器而言就是,如果它通过BUD被激活,此时如果不给它一个更新的话,那么它便会处于激活锁定状态,此时再给它一个红石信号是不会让它有所反应的。在红石炮中的表现就是,发射器不会发射tnt。
比如这种情况
大家可以自行尝试一下,这种情况会导致自第二次激活开始,有些发射器便可能不再发射tnt
知识点二:
红石中继器在放置、激活、失去激活时会有一个比较奇特的更新范围,它只会更新其前方方块和该方块的毗邻方块(图中所示染色玻璃的区域)
我们让这些活塞处于亚稳态
放置中继器便会出现这种情况
知识点三:
虽说活塞和发射器都有BUD但是不同之处在于,活塞激活时可以更新周围的区域(或者叫其毗邻方块,即下图红色染色玻璃标出的区域),但是发射器不行,发射器在被激活时是无法更新其毗邻方块的
我们可以通过以下实验进行验证
首先我们要清楚,红石线在放置,破坏,亮起,熄灭的时候会更新其毗邻区域以及其毗邻的毗邻(下图红色染色玻璃标出的区域,包括红石线本身和那个铁块)
我们可以做出以下的实验装置进行验证
图中染色玻璃标识出的为红石线的更新范围,通过对比我们可以发现,右侧装置中只有上方的活塞处于红石线的更新范围(左图黄色染色玻璃标出的位置)下方两个活塞都不在红石线的更新范围之内,其中一个已经处于亚稳态,而另一个如果在上方红石线更新的条件下,也将处于亚稳态
点亮红石线,我们发现三个活塞都伸出了
其原因在于,左上角的活塞会更新左下角的活塞,而左下角的活塞又会更新右下角的活塞,从而三个活塞同时伸出
我们把活塞换成发射器来看看,发射器中都装有箭
点亮红石线,只有左上角的发射器射出了箭
大家可以自行验证一下
那么我们回到我上次留的那个问题(自己挖了个坑往里跳orz事后发现这个问题其实蛮难解释清楚的)
为什么交错的中继器激活会比并排的中继器激活方式要好
首先我们来看并排式的,这是一个前后的示意图
图中红色玻璃标出的发射器(以下简称红发射器)处于有三个能触发BUD的位置,黄色玻璃标出的发射器(以下简称黄发射器)有两个能触发BUD的位置。
既然发射器本身的激活是无法更新其毗邻方块的,那么那些连射的大炮是怎么实现稳定射程的呢,或者说,什么让第一次发射后因为BUD而处于激活锁定状态的发射器被更新而回归原始态呢?
答案就是中继器。之前也向大家展示过中继器的更新范围了。
中继器可以更新这个发射器板中的一个十字形区域。
我们先来分析一下比较简单的黄发射器
从目前的种种现象来看,各种红石器件的更新是按顺序的,同种红石器件的更新也是逐序的,因为我本人也不是太清楚具体的更新顺序,所以我只能穷举一下各种情况了(据说红石线的更新是随机的……简直有毒)
情况1:更新顺序先紫后蓝(那个紫色其实是品红但是为了方便表述我就直接用紫色了)
在紫发射器被强充能后,黄发射器会处于亚稳态,但由于中继器更新不到它,所以它不会被激活。随后蓝发射器被强充能,黄发射器被更新,也被强充能方块激活(具体顺序未知)。在发射器失去激活时,紫发射器首先失去充能,随后蓝发射器失去充能并给黄发射器一个更新,黄发射器回归原始态,所以这种情况不会出问题。
情况2:更新顺序先蓝后紫
在蓝发射器被强充能后,黄发射器被激活,随后紫发射器被强充能,黄发射器处于一个亚稳态。在蓝发射器后的中继器失去激活时,会给黄发射器一个更新,而此时黄发射器正好是处于亚稳态的,这个更新让黄发射器进入了激活锁定状态,随后紫发射器后的中继器失去激活,但是更新不到黄发射器。
第二次激活时,蓝发射器被强充能,同一gametick内,发射器被中继器更新,不过此时发射器依旧算激活锁定状态。这一gametick过后,黄发射器算作被强充能而处于激活锁定状态,此时给它一个红石信号也无法让它被激活。之后失去激活的情况就和第一次一样了。
根据上面的分析,情况二也就是先激活蓝发射器再激活紫发射器的情况下,黄发射器就会出现第二次及其以后的激活不发射物品的情况(如果不给它一个额外的更新的话)
那么红色发射器呢?它的更新情况更加的复杂,不过,其实这些情况只是黄发射器情况的延伸
考虑到对称性,其实红发射器之有三种情况,即蓝蓝紫,蓝紫蓝和紫蓝蓝。大家可以根据前面的分析自己推导一下,只要紫发射器不是最后一个更新,那么红发射器就会一直处于激活锁定状态。
然后我们再来看看这种交叉布线的情况
对于那些只有一个可以触发BUD位置的发射器(比如图中的黄发射器),我们不用考虑,因为在中继器失去激活后带来的更新会让其回归原始态。在这组发射器中,我们只需要考虑红发射器,因为它有三个触发BUD的位置。
红发射器所处的情况其实比较复杂,不过我们可以分两种情况来看,一种情况是红发射器最后更新,一种是红发射器不是最后更新。
情况1:红发射器最后更新
由于红发射器最后更新,所以不管之前它处于什么状态,在所有中继器失去激活后它都将处于原始态。
情况2:红发射器不是最后激活
由于红发射器不是最后激活,所以根据之前的分析,红发射器应该要处于激活锁定状态,但是事实并非如此,红发射器每次都能够正常激活,这是为什么呢?
其实,这个是由红石线的更新导致的。不管红发射器是否处于激活锁定状态,在第二次激活时,由于红发射器后中继器所连的红石线能够给红发射器一个更新(红石线的更新范围之前有提),所以红发射器会回归原始态,这个更新只需要花费1gametick的时间,而中继器激活发射器需要2gametick,所以发射器会再次被激活。那么,有没有可能把中继器改为红石线来让红发射器一直处于激活锁定状态呢?不行。因为在我这种情况下,把中继器改为红石线会改变红石线的指向,有些红石线是不会指向发射器的,自然无法激活它。
不过,从另一个角度考虑,如果不让红石线更新红发射器的话,红发射器依旧有可能一直处于激活锁定状态?
是的,我们可以把装置的布线改成这样
由于红石线更新的随机性,我在每个不同的位置都放红石两次,结果还真的让我找到了一个可以让红发射器一直处于激活锁定状态的位置
我的版本是1.7.10,此时面朝的方向为西,由于红石线更新规律随机,而且每次更新顺序固定(这是好像跟java的版本有关,而且每个版本的顺序可能还不同,所以这个实验的复现性比较差),所以当红发射器后的中继器不是最后一个更新时,红发射器便会一直处于激活锁定状态。
那么,如何避免出现激活锁定状态的情况呢?
发射器墙可以用交错布线,而下图的这种情况,我们有另外一种方式。
有时为了提高空间利用率,我们会采用这样的炮管
而如果直接在发射器上铺红石线的话,又可能出现激活锁定的情况
所以,为了避免出现激活锁定的情况,这样放置发射器时我们不能直接在发射器上铺红石线,不过我们可以这样弄
利用半砖上铺红石线来激活发射器,这里利用了BUD和红石线的更新范围。根据前面的推导,如果看明白的话这里应该可以直接推了,图中的发射器要么没有触发BUD的位置要么只有一个触发BUD的位置,不会出现激活锁定的情况。
所以说我们也不能用下图的方式激活发射器,由于红石线能够对实体方块弱充能(而不会充能半砖),所以会出现有多个触发BUD的位置的发射器。
在有些对射速和稳定性要求比较高的红石炮中,我们会用到这样的压缩装置
这个装置可以提供五个tnt用来压缩炮管中的tnt(具体怎么用之后会讲)
我们可以这样布线
有时候因为方向的限制,我们可能会这样布
但是这样其实是不行的。至于为什么,大家可以自行分析一下(只能说有可能不行,因为那个蛋疼的随机更新顺序。所以,为了保证不被随机所影响,我们布线时要尽量避免BUD影响的情况出现,如果按下图方式激活,图中最远端的那个发射器会处于激活锁定状态)
至于为什么我要画这么大的篇幅来讲发射器?因为扫射矢量炮必须保证每个射程都是稳定的,有一个发射器出问题都不行。而我相信这样对于发射器的详细分析能够让诸位在红石炮调试过程中发现问题时迅速找到问题的根源所在
实体tnt
好了接下来我们来讲实体tnt。因为实体tnt的性质与红石炮炮体的结构有很大的关系,所以炮体的部分我会穿插在实体tnt的内容之中以保证内容的衔接。
关于实体tnt,我们先从wiki上摘下一段话,接着分析(其实也可以直接上源码但是好麻烦orz)
一旦被激活后,TNT 就会变成一个实体。
它会在被激活的TNT方块的中心(+0.5,+0.5,+0.5)生成,它是一个边长为0.98的正方体。
如果它被红石或火激活,它会在40次红石计时(4秒/80次游戏计时)后爆炸。
生成后,被激活的TNT会被给予垂直速度0.2米/刻,随机方向的水平速度0.02米/刻。
如果没有被任何方块卡住,它将会在平地上移动0.166m。
其实发射器发射tnt时,效果是一样的
从第一句,开始,被发射的tnt是一个实体。
这句话意味着,tnt是可以卡入方块之中的
这个性质导致在活塞压缩时可能会出问题。
我们开始第一个关于炮体的延伸
所谓的炮体,其功能就是压缩(或者叫集中)tnt,让tnt尽量聚集在一起,共同对弹头进行推进。所以炮体一般分为两个主体部分,一个用来压缩推进用的tnt,一个用来压缩弹头的tnt(因为包含一个tnt的弹头的打击范围往往没有包含多个tnt的弹头的打击范围大,这和实体tnt的一个bug有关)
这是GT索魂的一门炮里的炮口,可以清楚地看到有两根炮管对着此处,其中一根提供的是推进药,而另一根提供的就是弹头。
为了接下来的表述方便,红石炮主体的结构会按照下图的方式表达
压缩器:对推进药tnt起压缩作用的装置,未标明的话特指tnt压缩器
炮管:在红石炮主体中供tnt运动的部分,未标明的话特指供推进药tnt运动的部分
推进药爆炸点:推进药爆炸,对弹头产生推进的地方
弹头供应器:顾名思义,提供弹头的装置
对于一个比较复杂的红石炮,我们会按照下图方式表述
推进药一、二级压缩器:多个压缩推进药tnt的装置,按照压缩器的工作顺序分级。(弹头压缩器类推)
推进药供应器组:供应推进药的发射器组(弹头供应器组类推)
推进药炮管:供推进药运动的炮管(弹头炮管类推)
炮架:或者称为炮口,决定弹头被推进后的运行轨迹的部分。
对于tnt的压缩,我们一般有三种方式:tnt压缩、水流压缩和活塞压缩,我们一般以tnt压缩为主,水流压缩和活塞压缩为辅
长距离的炮管运动用tnt压缩,一般是一个压缩器压缩长度为六的供应器供应的tnt,因为如果再长的话压缩器的爆炸推力就推不到了(当然缩短是没问题的)
如果需要运动的距离比较长,我们也可以这么做
这里用到了tnt压缩,水流压缩和透门原理
由于六个发射器发射的tnt与压缩器的距离不同,但是这些tnt要运动到相同的位置,所以,靠压缩器近的tnt获得的速度大但是运动距离也长,靠压缩器远的tnt获得的初速度小但是运动距离短,那么,靠压缩器最近的那个位置的tnt可能不是最快到达指定位置的那个tnt
所以这个时候我们就需要靠在炮管中加水流来辅助
流动的水让靠压缩器最近的tnt稍稍前移,这样能够更快地到达预定位置(要实现这样的效果你需要卡时序)
活塞压缩不常见,但是这里有一个比较成功的例子
在GT索魂的770级引擎式速射炮中,两边采用的活塞压缩将供弹相互错开,每一边的供弹速度都只有37.5次/分钟但是这门炮的射速达到了75次推进/分钟
在活塞压缩时,如果tnt还未落地,这时用活塞推就会让tnt卡到方块里去,造成炸膛
所以一般推的时候tnt将要到达的方块上方不能放有完整碰撞箱的方块
刚刚提到了透门原理,我们在这里就讲一讲栅栏门这个在红石炮中用途很多的存在吧
栅栏门在关闭时有碰撞箱,在打开时没有碰撞箱,关闭的栅栏门在接收到红石信号后会进入打开状态,这个早在D大几年前造出的无限射程的红石炮里就用到了(同时,D大那门炮中还用到了正交推进,这是矢量炮的源头所在)
D大用关闭的栅栏门来限制tnt的初始运动,同时在之后给栅栏门一个红石信号,打开的栅栏门由于没有碰撞箱,所以实体tnt可以无阻碍地通过
而透门原理指的是,打开的栅栏门可以阻挡tnt的爆炸推力,同时能够让实体tnt通过的性质
传统的高频炮是一个155的结构。为什么要这么做?因为高射速的炮前面的推进药会给后面的推进药一个推进力导致后面的推进药往回运动。这样的炮射程相当不稳定(推进药会在炮管里来回窜动,对弹头的推力不稳定)
如果把打开的栅栏门放在炮口的话就可以避免来回窜动的情况,同时还能剪掉一段炮管
为了更清楚地展示效果,我把两种结构都做成了完整的炮
先看看右边的这种155型的高频
从tnt的飞行轨迹来看,这门炮的稳定性不算很高
最终的打击效果,虽然有一个比较集中的打击区域,但是在飞行轨道的投影先上也出现也弹坑
近距离看,有的弹坑还很深
再看看左边的
tnt的飞行轨迹很稳定
最终的打击坑也集中在一个很小的范围
很鲜明的对比
当然,透门原理还有其他应用,就看看大家如何发挥自己的创造力了吧。
今天就来对之前进行补充以及纠正一下一前表述之中的不妥之处吧。
之前关于摧毁中继器时的更新范围问题,可能留意的人会发现我开始没加,然后后面说摧毁中继器会有大的更新范围,之后又删了……为什么反复修改……今天认真研究了一下才发现……这玩意儿跟方向有关……
首先我们做一个亚稳态活塞并且在周围距离2处放四个中继器
活塞面朝东方
摧毁东西北的中继器活塞都不会有反应
唯独摧毁南边的有
将活塞换一个朝向也是一样的
摧毁南面的……
关于栅栏门
首先是栅栏门的放置,放置栅栏门时其下方一格不能是空气,水,梯子一类的东西,如果是,那么对着方块的侧面是无法放置栅栏门的(下图正好截到放置栅栏门时手不在视野之中的画面)
另外,普通的更新无法让打开的栅栏门关闭,但是红石线,红石中继器和红石比较器可以
神tm比较器好像也是按方向来的……
放置红石线无法更新到栅栏门
红石线的摧毁,激活,失去激活可以关闭栅栏门
在实际情况中,一般是红石线带来的更新引起了栅栏门的封闭,引起炸膛,所以用透门原理时如果炮炸膛的话请注意这一点。
最终的弹坑确实是很集中的
不过,这门炮的时序计算两还是大于使用透门原理的高频炮的,按照ps的讲法,这门炮要满足两个条件:
1.压缩器的推力要足够在n gametick内把供弹器提供的tnt推到最前面。
2. 压缩器和供弹器之间要错开至少n gametick
而且为了弹坑的稳定,这门炮还是用了透门原理
在弹头供应器的位置有一个打开的栅栏门用来防止向上推力对弹头造成影响。上方供弹可以减小tnt初动能对于弹坑稳定性的影响。
为了降低tnt初动能的影响,tnt下落过程中要有一小段有方块挡住。
其实观察之前的地对地矢量炮就能发现,上方供弹的形式很常见,因为地对地矢量炮两侧都有炮管,无法直接侧面供弹,tnt总需要一小段的下落,而为了降低初动能的影响,要有一段有方块挡住,紧接着为了不影响tnt的飞出,上方供弹的发射器要放得很高(最常见的正交推进是下方两格里两个tnt制造向上推进,那么弹头预备飞出位置的上方六格位置不能有东西挡住(按照水平方向最小推力为距离预备位置两格处的1个tnt,如果更改的话可以适当调整)
当然如果你不像用上方供弹而还是想用侧面供弹的话,你可以设计成非常规矢量炮的形式
至于为什么不再上方供弹中弹头供应器上方放一个助推的发射器用来发射tnt加速弹头的下落速度?因为tnt初动能的影响,这种方式会让下落的tnt不大稳定,打出的弹坑比较散,如果要增加稳定性的话,你需要一段更长的方块来挡住tnt,比如下图(为了方便观察,我把其中一侧的玻璃换成了金块)
PC
PS5
XboxOne