我的世界手游爆炸火箭怎么做 爆炸火箭指令大全
2017-10-310大中小
可见:多只箭不会出判定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:炸弹}
这样就做出了不会在空中殉爆,射中人也能爆炸的爆炸箭啦~
以上就是有关于“嗨客我的世界手游爆炸火箭”的全部内容,更多我的世界手游攻略请下载“网侠手游宝”。
攻略大全 |
网友评论