minecraft吧 关注:2,561,019贴子:31,988,068

[18w03b][指令]让潜影贝子弹少走弯路

只看楼主收藏回复

众所周知,潜影贝子弹是沿着xyz轴走的,它不会斜着走(真可怜)。那么今天我就给大家带来让它斜着走的教程(同理,可用于烈焰弹)。
效果如图,紫色粒子是我加的,让轨迹更清晰(因为计分板不能接受浮点数,所以可能还是有点“走弯路”)


IP属地:广东1楼2018-02-03 23:31回复
    以下潜影贝子弹标签我们需要用到:
    Target:{X,Y,Z,L,M} TXD,TYD,TZD Steps
    Target子标签中的xyz都是整形,L和M是long类型,TXD、TYD、TZD是double类型。Target标签为必须,XYZ告诉子弹目标的位置,LM是目标的UUID(Least和Most),但是我们指定Target的唯一用途是防止子弹下坠爆炸(没目标的子弹只会下坠爆炸)。T?D是子弹的方向,当Steps=0时才有用,也是教程的核心,与烈焰弹的direction类似。Steps是潜影贝子弹撞到目标所要转折的次数(子弹会尽量达到这个次数,设置成100估计就是无限转),我们设为0。


    IP属地:广东3楼2018-02-03 23:37
    回复
      2025-08-31 03:35:10
      广告
      不感兴趣
      开通SVIP免广告
      先随便找个位置生成所谓的“目标”,lz用的是:/summon villager_golem 1000 4 1000 {NoAI:1b,UUIDLeast:1l,UUIDMost:1l}
      那么我们得出生成潜影贝子弹的命令是:/summon shulker_bullet ~ ~5 ~ {Target:{X:1000,Y:4,Z:1000,M:1l,L:1l}}


      IP属地:广东4楼2018-02-03 23:40
      收起回复
        接下来我们新建2组计分板,记录2个向量:offset和position
        /scoreboard objectives add offsetX dummy
        /scoeboard objectives add offsetY dummy........类推
        offset记录了实体到真正要追踪的目标的距离,position记录实体位置。
        接下来,我们要登记每个实体的位置到position上
        /execute as @e store result score @s positionX run data get entity @s Pos[0] *此处用到1.13新特性
        /execute as @e store result score @s positionY run data get entity @s Pos[1] ...类推
        上面的指令我来解释一下(可能有人不懂1.13)/execute as @e以为让所有实体执行之后的命令(还没完)store result score @s positionX也是execute的一部分,意为改变指令执行者计分板positionX的值为run后面那段指令的返回值。data get entity @s Pos[0]就是获取指令执行者的Pos标签的第一个元素(就是x轴位置)(返回值就是这个!),这些操作会使位置的小数部分被去掉。


        IP属地:广东5楼2018-02-03 23:48
        回复
          /scoreboard players operation @e offset = MRE_Z position (自己脑补XYZ)
          这里的“真正目标”是我自己(子弹最后会打到我),这条指令相信大家都懂,就是把offset设置为目标的位置。
          /scoreboard players operation @e offset -= @s position (自己脑补XYZ*2)
          这里让两个向量相减,(标准化后就能得出子弹方向,但mc不需要标准化,好像是自动的)得出子弹方向,把值附上T?D就行了


          IP属地:广东6楼2018-02-03 23:52
          收起回复
            /execute as @e[type=shulker_bullet] store result entity @s T?D double 1 run scoreboard players get @s offset?
            最后赋值的指令,教程到此结束。


            IP属地:广东7楼2018-02-03 23:52
            收起回复

              没事干贴上工作室的图@迷你迫击炮 (群主),我睡了


              IP属地:广东8楼2018-02-03 23:55
              回复
                等等,非教程部分:
                你也可以通过execute改变Target来做非斜线的子弹。
                指令:
                /execute as @e[type=shulker_bullet] store result entity @s Target.? int 1 run scoreboard players get @p position
                /execute as @e[type=shulker_bullet] store result entity @s Target.L或M long 1 run data get entity @p UUIDLeast或UUIDMost


                IP属地:广东9楼2018-02-04 00:12
                收起回复
                  2025-08-31 03:29:10
                  广告
                  不感兴趣
                  开通SVIP免广告
                  我是谁 ?我在哪? 我为什么要点进来? 楼上那个奇怪的人在说什么?
                  Ծ‸Ծ我看到了一条小尾巴~


                  IP属地:广东来自iPhone客户端10楼2018-02-04 01:56
                  回复


                    IP属地:广东来自Android客户端11楼2018-02-04 02:42
                    收起回复


                      IP属地:广东12楼2018-02-04 02:46
                      收起回复
                        远古版本玩家一脸懵逼


                        IP属地:江苏来自Android客户端13楼2018-02-04 11:20
                        收起回复
                          ——你会编程吗?
                          ——会。
                          ——什么语言?
                          ——命令方块。


                          IP属地:江苏14楼2018-02-04 11:27
                          收起回复
                            已经涉及到变量类型的知识了一点也不亲民


                            15楼2018-02-04 11:29
                            收起回复