A?-A?,得:
A?=(x?-x?,y?-y?,z?-z?)
这个结果就是dx、dy、dz的值了:
[x=x?,y=y?,z=z?,dx=x?-x?,dy=y?-y?,dz=z?-z?]
举个例子:
A?=(287,65,122)
小主,
A?=(300,69,24)
就可以得出:
[x=287,y=65,z=122,dx=13,dy=4,dz=-98]
这样子,以后我们就不用刻意去记到底要延伸多少格了(除了x、y、z并没有指定的情况下,这时候就要以相对坐标的思维去思考了)。
对了,在Java版,判定实体是否在范围内是按照碰撞箱是否有重叠判断,在基岩版则是按照脚部坐标判断。
——记分板分数——
——记分板标签——
——队伍名称——
上面几格都是关于“记分板”(scoreboard)的,这个会在第四十九章中讲到。
——数量——
这个很有意思。Java1.13及以上版本是limit和sort,基岩版和Java1.13以下版本是只有一个c。
由于limit和sort相比于c是大径相庭,所以我们先从limit和sort开始。
使用@e,我们可以选择所有实体,但我们该怎么选择10只实体呢?
@e[limit=10]
就可以了。
但如果要选中最靠近目标选择器基准点的实体该怎么办?
这时候我们就需要使用sort,调整选取模式。
在Java1.13及以上版本中,@a和@e这两个目标选择器变量的默认选取模式是按照实体生成时间由长到短排列,即越老排越前面,对应sort的选取模式即:arbitrary。
我们要选中最靠近基准点的实体,只需要使用nearest模式即可:
@e[limit=1,sort=nearest]
这样子就可以选取最靠近基准点的实体。但请注意,在基岩版和Java1.13以下版本中,@a和@e这两个目标选择器变量是按照实体与目标选择器基准点的距离从小到大排列的,也就是nearest模式,并不是按照实体生成时间排列。
sort一共有四种模式:
nearest——由近到远
furthest——由远到近
random——随机
arbitrary——按生成时间由老到新
其中,对于arbitrary模式来讲,『c』这个参数基本上无法模仿。
那么c参数该如何使用呢?
先别着急,因为还有一个知识点没讲:
其实,当使用@p和@r变量时,limit或c默认为1,更改limit或c会增加选择最近(@p默认排列模式为nearest)或随机(@r默认为random模式)目标的数量。当使用@a或@e变量时,此方式会限制目标数量。如果是@s呢?那还用说吗?你有10个吗?Minecraft可没有分身术。
注意一点,limit不能写负数,但c可以。
c参数为正整数时,在除@r变量外会选取最靠近基准点的C个目标;为负整数时,在除@r变量外会选取最远离基准点的C个目标。比如:
@a[c=5]
@a[c=-5]
前者会选取最近的5名玩家,后者会选取最远的5名玩家。
但如果要随机排序呢?那么就得用@r(随机排序)变量了。
c参数还有一个小知识,如果所有目标都一样远(你这不是钻牛角尖吗),在负整数的情况下将会选取生成时间越晚的实体,正整数情况下将会选取生成时间越早的实体。
——经验等级——
这个用来选取经验等级的参数,两个版本又不相同了。Java1.13及以上版本是level,基岩版和低于Java1.13的版本是l和lm。
等等,你有没有发现,这和那个rm、r、distance不超级像的吗?
没错,基本上你怎么用距离的,选取经验等级就怎么用。比如选取经验等级小于等于5的玩家:
@a[l=5]——Java1.13以下和基岩版
@a[level=..5]——Java1.13及以上
又比如选取经验等级大于等于5的玩家:
@a[lm=5]——Java1.13以下和基岩版
@a[level=5..]——Java1.13及以上
又比如选取经验等级在5到10级之间(含5和10级)的玩家:
@a[l=10,lm=5]——Java1.13以下和基岩版
@a[level=5..10]——Java1.13及以上
又比如选取经验等级正正好好为5级的玩家:
@a[l=5,lm=5]——Java1.13以下和基岩版
@a[level=5]——Java1.13及以上
懂了吧?不懂就对照r、rm、distance多看几遍。
本章就到此结束。