(于2022/7/15重写)
在上一章,我们总结出了新『指令执行三要素』,并初步学习了修饰子命令中的『as、at和in』子命令,了解了execute的『流水线思维』(注:这个思维名称是作者自己编的)。那么接下来我们就应该快马加鞭,看看剩下的五个修饰子命令:
facing ——更改旋转角度
rotated——更改旋转角度
anchored——更改基准部位
positioned ——更改执行位置中的坐标
align——将执行位置中的坐标转化为方块坐标
我们先从前几章在讲tp指令就接触过的facing子命令入手:
(?怎么就接触了?)
(因为两者非常像,算接触也可以啊)
execute的facing子命令,和tp/teleport指令的facing参数十分类似,都是『改变朝向为面向指定的坐标或某个实体』,只不过前者改变的是命令的执行朝向,后者改变的是传送目标的朝向。
所以facing子命令的语法相比tp的facing语法,不能说是十分类似,至少也是一模一样了:
... facing <坐标>...
... facing entity <实体><朝向部位>...
是不是?也就『朝向部位』这个参数从可选变成了必填而已。
既然功能都完全一样,这里也就不多介绍了,直接上例子:
/execute facing ^5 ^^ run tp ^^^
这条指令是什么意思呢?它竟然有两个局部坐标!
但这两个局部坐标的朝向并不一致。第一个局部坐标的朝向和执行者的朝向一致,所以facing ^5 ^^在这的意思是『改变执行朝向为面向执行者左边5格』,第二个局部坐标的朝向和facing子命令指定的朝向一样,所以最终你将会看向你原本左边5格的位置。
/execute facing entity @e[distance=1..,sort=nearest,limit=1] feet run tp ^^^
这条指令将会使得执行者看向最近实体的眼睛。至于为什么是眼睛,我们已经在第六十四章讨论过了。
如果我们要实现看向最近实体的脚该怎么办?
想一想,当你看向一个人的脚时,你是用什么看的?
眼睛啊!
所以说,我们得把局部坐标的基准点从默认的脚部改到眼睛的位置,也就是更改执行朝向的基准部位。这时候,我们就需要用到anchored(/???k?r/)子命令。
anchored子命令的用法十分简单:
... anchored <实体锚点>...
其中,『实体锚点』参数也就是『基准部位』参数,前者是官方的叫法,后者是本书的叫法。它仅仅可以填写两个东西:eyes和feet。执行指令时默认是使用feet,这里我们尝试填写为eyes:
让我们试一试:
/execute anchored eyes run tp @s ~~~ facing entity @e[distance=1..,sort=nearest,limit=1] feet
这条指令可以使得执行者看向最近实体的脚部(从执行者的眼睛看向最近实体的脚部)。
更改执行指令的基准部位后,就会有一些有趣的效果。比如:
/execute anchored eyes run tp @s ^^^
这将会将你传送到你眼睛的位置,更确切地说是将你的脚传送到你眼睛的位置。
facing可以更改旋转角度,但rotated子命令也能,那它俩有什么区别呢?
rotated子命令并不是将执行朝向改为朝向某个地方,而是直接更改旋转角度为指定的旋转角度,或某个实体的旋转角度。其语法如下:
... rotated <水平旋转角度><垂直旋转角度>...
... rotated as <实体>...
这有点类似于tp指令的部分功能,execute相当于把这部分功能独立了出来(tp:怎么又是我)。
举个例子:
/execute rotated 270 0 ...
/execute rotated -90 0 ...
这两条指令都可以将执行朝向改为水平朝向正东方,只不过前者是采用我们在第九章教的『真南方位角』,后者是采用Minecraft中标准的方位角。
/execute rotated as @e[sort=nearest,limit=1]...
这章没有结束,请点击下一页继续阅读!
这将会使执行朝向与距离执行地点最近的实体一致。
十分简单,是不是?但请注意,和as、at子命令一样,当facing entity和rotated as选择到多个实体时,指令都会在每一种情况下分别运行一遍。
现在,at、facing、rotated、anchored这四个与旋转角度有关的子命令已经全部讲完了,剩下的两个子命令positioned和align仅仅和执行位置中的坐标有关系。让我们继续学习一下。
positioned子命令乍一看和at子命令很像,都是改变执行位置,但其实两者的区别很大。