大神教你用命令方块制作效果更好的爆炸箭

时间:2017-09-17 来源:88130安卓下载 作者:佚名

  下面小编为大家带来我的世界爆炸箭进阶教程,让玩家知道更好的爆炸箭应该如何制作,想知道的玩家一定要看下面的内容!

  最终改进成品如图:

  可见:多只箭不会出判定bug,射中(不是掠过)人也能炸

  下面分四个步骤讨论:(以下所有指令因版本原因实体id有差别,在此只讨论方法)

  一:最简单的爆炸箭

  一般x度等搜出来的都是这一种,也是最不需要指令基础的一种:

  /testfor @e[type=Arrow] {inGround:1b}

  /execute @e[type=Arrow] ~ ~ ~ /summon PrimedTnt ~ ~ ~

  /kill @e[type=Arrow]

  具体操作办法是第一条指令循环(高频)比较器(连锁)到第二、三个命令方块,即为高频探测到有箭落地之后,给所有箭召唤爆炸的tnt。

  此办法虽然简单,但缺点也非常明显:当有多只箭的时候,只要有一只箭落地,那么所有的箭都会爆炸。

  如图:

  可以看到,当近处的箭碰到墙壁时,远处的箭在空中就炸了

  所以,一部分懂些计分板的玩家想出了第二钟办法

  下面小编为大家带来我的世界爆炸箭进阶教程,让玩家知道更好的爆炸箭应该如何制作,想知道的玩家一定要看下面的内容!

  最终改进成品如图:

  可见:多只箭不会出判定bug,射中(不是掠过)人也能炸

  下面分四个步骤讨论:(以下所有指令因版本原因实体id有差别,在此只讨论方法)

  一:最简单的爆炸箭

  一般x度等搜出来的都是这一种,也是最不需要指令基础的一种:

  /testfor @e[type=Arrow] {inGround:1b}

  /execute @e[type=Arrow] ~ ~ ~ /summon PrimedTnt ~ ~ ~

  /kill @e[type=Arrow]

  具体操作办法是第一条指令循环(高频)比较器(连锁)到第二、三个命令方块,即为高频探测到有箭落地之后,给所有箭召唤爆炸的tnt。

  此办法虽然简单,但缺点也非常明显:当有多只箭的时候,只要有一只箭落地,那么所有的箭都会爆炸。

  如图:

  可以看到,当近处的箭碰到墙壁时,远处的箭在空中就炸了

  所以,一部分懂些计分板的玩家想出了第二钟办法

  二:初步爆炸箭

  通过记分板,我们可以使落地的箭分数为一分,然后让一分的箭爆炸。这样就能完美区分开落地的箭和没有落地的箭了:

  创建计分板:

  /scoreboard objectives add ld dummy

  之后高频(循环):

  /scoreboard players set @e[type=Arrow] ld 1 {inGround:1b}

  /execute @e[type=Arrow,score_ld_min=1] ~ ~ ~

  /kill @e[type=Arrow,score_ld_min=1]

  第一条给落地的箭设置1分,第二条让一分的箭爆炸,第三条清除掉落地的箭。

  这种办法虽然把落地的箭隔离开来,避免了一定的bug,看起来完美无缺,但是还是忽略了一种情况:箭直接射到玩家/生物怎么办??直接射中,不算落地,箭也不爆炸。

  于是有人就偷懒的加了一条指令:

  三:偷懒法

  此方法在第二种之上加了一条指令:

  /execute @e[type=!Arrow] ~ ~ ~ /execute @e[type=Arrow,r=2] ~ ~ ~ /summon Creeper ~ ~ ~ {ExplosionRadius:3,Fuse:-1,ActiveEffects:[{Id:14,Duration:0}],CustomName:炸弹}

  这种办法很明显有严重的bug,箭靠近实体就会爆炸。箭飞的太快,半径太小根本探测不到,半径大就算箭从旁边掠过没有射中也会爆炸。

  四:作者的办法

  综上所述:我们要解决两个问题:

  1:让箭落地爆炸

  2:让箭射中人也爆炸

  经过深(hu)思(si)熟(luan)路(xiang),笔者发现:无论是箭落地就kill,还是箭射中了生物,都有一个共同点,那就是箭作为一个实体消失了,于是决定从这方面下手。

  首先给箭实体高频召唤另外的实体寄存(作者用的小火球,以下通用小火球简称)即为给箭高频召唤小火球。然后一个命令方块给小火球高频加分,另一个命令方块探测箭并给箭周围的小火球减分,这样如果箭不消失,那么小火球就会维持分数的平衡不加不减。同时创建另外一个计分板,用来给小火球计时到时间清除。当箭射中人或者落地清除消失的时候,小火球在第一个计分板上的分数会只加不减,从而发生爆炸。

  命令如下:(创建计分板部分省略)

  /scoreboard players set @e[type=Arrow] ld 1 {inGround:1b}

  /execute @e[type=Arrow] ~ ~ ~ /summon SmallFireball ~ ~ ~ {direction:[0.0,0.0,0.0]}

  /scoreboard players add @e[type=SmallFireball] FX 1

  /execute @e[type=Arrow] ~ ~ ~ /scoreboard players set @e[type=SmallFireball,r=4] FX2 0

  /scoreboard players add @e[type=SmallFireball] FX2 1

  /kill @e[type=SmallFireball,score_FX_min=3]

  /kill @e[type=Arrow,score_ld_min=1]

  /execute @e[type=SmallFireball,score_FX2_min=2] ~ ~ ~ /summon Creeper ~ ~ ~ {ExplosionRadius:3,Fuse:-1,ActiveEffects:[{Id:14,Duration:0}],CustomName:炸弹}

  这样就做出了不会在空中殉爆,射中人也能爆炸的爆炸箭啦~

热门搜索

手游排行榜

  • 最新排行
  • 最热排行
  • 评分最高