开启辅助访问     
收藏本站

站内搜索

搜索

Minecraft(我的世界)苦力怕论坛

[展示] 目标选择器

 发表于 2023-2-6 09:04:18 来自手机|显示全部楼层|阅读模式 IP:北京
目标选择器在wiki中是一个很大的篇目,可能需要用两次才能讲完
(注:这一次的教程基本上全都是干货,因此就不用蓝色字体标注了)
在Minecraft Wiki中,目标选择器的内容主要分为目标选择器变量和目标选择器参数
先来说说目标选择器变量:
目标选择器变量用于指定待选目标的大致分类
(摘自中文wiki)
在基岩版中可以使用的目标选择器变量一共有6种(按照Wiki顺序,并改编自Wiki):
@p:选择执行指令处最近的活着的玩家。如果是在命令方块处执行指令,那么选择的玩家  就是离该命令方块最近的玩家;如果是在玩家聊天栏执行指令,那么选择的玩家会是  这名玩家本身
@r:选择一名随机玩家,但是可以通过增加type参数来选择非玩家的实体。无论选择的是  随机玩家还是随机实体,@r都只能选择活着的目标
@a:选择所有的玩家,无论是否存活
@e:选择包括玩家在内所有活着的实体
@s:选择该命令的执行者,即使已经死亡。如果命令的执行者是命令方块,那么不会选择  任何目标
@initiator:选择当前与NPC交互的玩家
@initiator是基岩版独有的目标选择器变量,这个变量非常有意思,如果有机会的话会和NPC放在一起讲(NPC也很有意思图片)
另外5种目标选择器变量应该是非常常用而且应用范围很广泛的。可以看到目标选择器指定目标指定的是“大致分类”,如果想要进一步细分,就需要用到目标选择器参数了
在使用目标选择器之后,可以用参数限定所要选择的群组。当使用@a或@e时,待选目标从全体筛选成特定的少数。当使用@p或@r时,参数将从完整的待选列表缩小到被筛选后的待选列表。当使用@s时,命令执行者只有在所有参数都满足时才会被选择,否则命令将执行失败。
在目标选择器变量之后附加键值对构成的逗号分隔,并包含在方括号中:
@<变量>[<参数>=<值>,<参数>=<值>,…]
(摘自中文wiki)
举个例子,如果选择输入/execute @e ~~~ setblock ~~~ stone,那么就会在包括玩家在内所有的实体的位置放置一个石头,但如果选择输入/execute @e[type=!creeper,r=20] ~~~ setblock ~~~ stone,那么就会在以执行指令位置为球心半径为20的球体内,且不为爬行者的实体的位置放置一个石头(其中“type”和“r”就是两个目标选择器参数,“!”起到了反选的作用)。可以看到,目标选择器参数起到的是“限定”的作用
接下来会介绍每一个目标选择器参数的效果
实体类型:
[type=<实体类型>]— 选择所有特定的实体类型的目标
[type=!<实体类型>]— 选择所有不是特定的实体类型的目标
(摘自中文wiki)
这大概是最常用的一个参数了,它可以选定某一种实体或者除了某些实体的其他所有实体作为选择对象
举例:
/kill @e[type=creeper]
清除所有爬行者
/kill @e[type=!cow,type=!sheep]
清除所有除了牛和羊以外的实体
数量:
[c=<值>]— 选择指定数量的目标,并以距离命令执行点的顺序排列
当使用@p和@r变量时,此参数默认为1。对它们使用c参数时会增加选择最近或随机目标的数量。当使用@a或@e变量时,此参数会限制目标数量
当满足条件的目标少于指定的数量时,不影响命令的执行
当输入的值为负值时,目标的顺序会被反转
(摘自中文wiki)
这是一个非常简单方便的参数,它可以增加或减少选择的目标数量。中文wiki所说的“并以距离命令执行点的顺序排列”,提供了一个非常便利的指令用法。可以看到上文提到的所有目标选择器变量中只有“选择距离最近的玩家”而没有“选择距离最近的实体”,那么利用这个参数就可以实现“选择距离最近的若干个实体”的效果,比如说/kill @e[type=creeper,c=1],这个指令可以清除距离执行点最近的一个爬行者,而/kill @e[type=creeper,c=-3],则会清除距离执行点最远的3个爬行者
坐标:
[x=<值>,y=<值>,z=<值>] — 在世界中定义一个位置。
这个位置将成为目标选择器执行位置(不修改命令执行位置),这意味着@p所选择的目标可能发生改变
(摘自中文wiki)
在一般情况下,在哪个位置输入指令,那么那个位置的坐标就是目标选择器执行位置。但如果将一个坐标作为目标选择器参数输入,那么该坐标将成为目标选择器执行位置(xyz中如果有一项或多项没输入,那么默认使用输入指令位置的坐标)
假设我们在x=0,y=50,z=0的位置输入一条指令,根据坐标参数输入与否,会产生不同的效果:
/kill @e[c=3]
此时会清除距离(0,50,0)最近的三个实体
/kill @e[c=3,x=100,z=30]
由于y方向的坐标没有输入,所以y方向的执行位置默认为与输入指令位置一致,此时执行命令的位置更改为(100,50,30),将清除距离(100,50,30)最近的三个实体
距离:
[r=R]— 只选择所有小于R个方块的目标执行命令
[rm=RM]— 只选择所有大于RM个方块的目标执行命令
(摘自中文wiki)
这个参数可以指定一个范围,该范围是以执行点为球心,半径为输入值的球体空间或者刨除该球体之后的空间,然后选择这个范围内的全部实体(若没有其他限制)。这两个参数可以一起使用,当然,rm的值必须小于r的值
/kill @e[rm=5,r=6]
清除所有到执行点距离在5-6之间的实体
/execute at @e[type=creeper] run kill @e[r=3]
清除到任意爬行者距离为3的实体,包括爬行者本身
体积尺寸:
[dx=<值>,dy=<值>,dz=<值>]— 选择所有位于一定长方体区域内部的目标。体积定义为从基准点开始,向“X”方向(东方)延伸dx格(包括基准点本身,下同),向“Y”方向(上方)延伸dy格,并向“Z”方向(南方)延伸dz格。如果只指定了其中的部分参数,那么剩余的参数默认为0
这可以解释为先创建两个坐标(x, y, z)和(x+dx, y+dy, z+dz),组成一个长方体,再保持长方体的西北下角不变,将长方体的三边分别向东、南、上方向(即三个坐标轴的正方向)延伸1格,得到一个体积为(|dx|+1)×(|dy|+1)×(|dz|+1)的长方体。最后选择脚部坐标与其重叠的所有实体。如果位置参数未定义,则相对于命令执行的位置计算。这三个参数允许任何整数,包括负数
在基岩版中,若指定了其中任一参数,基准点坐标(x, y, z)会自动向下取整
可以将通过按距离来选择与按体积来选择组合在一起, 在这种情况下,命令将选择在两个区域的重叠内的实体(在基准点的某个半径范围内,且不在定义的体积之外)
(摘自中文wiki)
wiki中说的比较复杂,我尝试简化一下
这个参数可以和“坐标”参数一起用,并会把“坐标”参数的用法改为该参数的用法,效果为从“坐标”参数点(未设置则默认为输入指令的位置,这个和“坐标”参数的规则是一致的)开始,向X轴延长dx格,向Y轴延长dy格,向Z轴延长dz格,最终会得到一个长方体的区域(如果少输入两个“体积尺寸”参数会得到单格长条状的区域;少输入一个会得到单层扁平状区域。特别的,如果三个参数都输入0,那么只会选择单格区域(与少输入三个相区分,少输入三个将会使用“坐标”参数的算法,而不是“体积尺寸”的)),在这个区域的实体将被选择
这个参数也可以与其他参数混用,wiki中提到了“距离”参数。根据之前所说的,实体需要满足所有参数的条件才会被选择,那么同时使用“体积尺寸”参数和“距离”参数选择的实体需要同时位于两个参数所划定的空间内
以指令输入位置在(100,100,100)举几个例子:
/kill @e[x=0,y=50,z=0,dx=10,dy=-10,dz=10]
清除从(0,50,0)到(10,40,10)范围内的所有实体
/kill @e[y=50,dx=10,type=creeper]
清除从(100,50,100)到(110,50,100)范围内的所有爬行者
/execute at @e[type=creeper] run kill @e[r=5,dx=4,dy=8,dz=4]
清除所有到任意爬行者(假设其坐标为(x,y,z))距离为5且在(x,y,z)到(x+4,y+8,z+4)范围内的实体
垂直旋转角度:
[rx=RX]— 仅选择所有最大垂直旋转角度为RX的目标
[rxm=RXM]— 仅选择所有最小垂直旋转角度为RXM的目标
更具体地说,是旋转高度与地平线的夹角,以度为单位。垂直旋转值从-90(垂直向上)向上增加,之后增加到0(水平),最后增加到90(竖直向下)(因此垂直旋转值随着向下旋转而增加)
(摘自中文wiki)
这个参数筛选的是垂直方向的实体面向角度,是一个范围。和“距离”参数类似,这两种用法同样是可以一起用的,但也需要注意rxm的值需要小于rx的值
这里用一个示意图来简单的展示一下,各位应该就能明白了
图片
水平旋转角度:
[ry=RY]— 仅选择最大水平旋转为RY的目标
[rym=RYM]— 仅选择最小水平旋转为RYM的目标
其角度以正南(或正Z轴方向)为基准顺时针旋转。水平旋转值从-180(面向正北)开始,到-90(面向正东),再到0(面向正南),再到90(面向正西),最后到180(再次面向正北)
(摘自中文wiki)
这个参数筛选的是水平方向的实体面向角度,其他方面都与垂直旋转角度类似,因此就不过多赘述了
下面是水平旋转角度的示意图
图片
或许这两个关于“旋转角度”的参数可以放在一起做成什么观察某个方向物体一段时间自动开门的机关呢图片
好啦,那么这次有关于目标选择器的教程就到这里了。其实还有一半左右的目标选择器参数没有说
苦力怕论坛,感谢有您~
 发表于 2023-2-6 09:05:30|显示全部楼层 IP:河北省
评论复审中...编号:5623181
2#2023-2-6 09:05:30收起回复
画新2023-2-6 09:07IP:北京
回复举报
wiki内容是复制的
画新2023-2-6 09:09IP:北京
回复举报
当然这一整片都是我复制的我自己写的微信文章
苦力怕论坛,感谢有您~
 发表于 2023-2-6 09:21:59 来自手机|显示全部楼层 IP:福建省
评论复审中...编号:5623343
3#2023-2-6 09:21:59收起回复
画新2023-2-6 09:23IP:北京
回复举报
不用客气
苦力怕论坛,感谢有您~
 发表于 2023-2-11 19:46:03|显示全部楼层 IP:河南省
评论复审中...编号:5708877
4#2023-2-11 19:46:03回复收起回复
苦力怕论坛,感谢有您~
 发表于 2023-2-11 19:52:01 来自手机|显示全部楼层 IP:上海
评论复审中...编号:5709065
5#2023-2-11 19:52:01回复收起回复
苦力怕论坛,感谢有您~

本版积分规则

本站
关于我们
联系我们
坛史纲要
官方
哔哩哔哩
技术博客
下载
网易版
安卓版
JAVA
反馈
意见建议
教程中心
更多
捐助本站
QQ群
QQ群

QQ群

访问手机版

访问手机版

手机版|小黑屋|系统状态|klpbbs.com

| 由 木韩网络 提供支持 | GMT+8, 2026-6-22 03:53

声明:本站与Mojang以及微软公司没有从属关系

Powered by Discuz! X3.4