进阶 - 距离(r)选择器
距离选择器概述
在Minecraft基岩版中,距离选择器(r参数)用于根据实体与命令执行点之间的距离来选择实体。这是制作精密指令系统和地图时非常重要的功能。
基本概念
距离选择器使用 r=值 或 rm=值 来筛选特定距离范围内的实体,让指令只在特定区域内生效。
基本语法
距离选择器的基本格式:
@e[r=10] // 选择距离10格以内的所有实体
@e[r=5,rm=10] // 选择距离5到10格之间的所有实体
@a[rm=15] // 选择距离15格以外的所有玩家
重要提示
距离是从命令执行的位置开始计算的。在命令方块中执行时,距离是从命令方块的位置计算。
范围选择 - r参数
使用 r=值 选择指定距离内的实体:
示例
@a[r=5] - 选择5格范围内的所有玩家
@e[r=10] - 选择10格范围内的所有实体
@e[type=cow,r=15] - 选择15格范围内的所有牛
精确距离 - rm参数
使用 rm=值 选择指定最小距离外的实体:
示例
@a[rm=10] - 选择10格范围外的所有玩家
@e[rm=5] - 选择5格范围外的所有实体
组合使用r和rm参数
可以同时使用 r 和 rm 参数来选择一个距离范围:
示例
@a[r=10,rm=5] - 选择5到10格范围内的玩家
@e[type=zombie,r=15,rm=8] - 选择8到15格范围内的僵尸
@e[r=20,rm=10] - 选择10到20格范围内的所有实体
注意
在使用范围选择时,rm 值必须小于 r 值,否则将无法选择到任何实体。
实际应用示例
1. 区域效果应用
# 给5格范围内的玩家速度效果
/effect @a[r=5] speed 30 1
# 给10-20格范围内的玩家挖掘疲劳
/effect @a[r=20,rm=10] mining_fatigue 30 1
2. 区域传送
# 将15格范围内的玩家传送到指定位置
/tp @a[r=15] 100 64 100
# 将5-10格范围内的实体传送到上空
/tp @e[r=10,rm=5] ~ ~5 ~
3. 区域检测与触发
# 检测是否有玩家进入10格范围内
/execute @a[r=10] ~~~ say 有玩家靠近!
# 当玩家进入5格范围内时给予物品
/execute @a[r=5] ~~~ give @s diamond 1
# 清除15格范围内的物品
/kill @e[type=item,r=15]
4. 结合其他选择器参数
距离选择器可以与其他选择器参数组合使用:
# 选择10格范围内有"vip"标签的玩家
@a[tag=vip,r=10]
# 选择5-15格范围内的牛,并排除有"farm"标签的
@e[type=cow,r=15,rm=5,tag=!farm]
# 选择20格范围内随机一个玩家
@r[r=20]
5. 高级区域系统
# 多层区域检测系统
/execute @a[r=5] ~~~ tag @s add in_core_area
/execute @a[r=15,rm=5] ~~~ tag @s add in_mid_area
/execute @a[rm=15] ~~~ tag @s add in_outer_area
# 根据不同区域给予不同效果
/effect @a[tag=in_core_area] regeneration 10 1
/effect @a[tag=in_mid_area] jump_boost 10 1
/effect @a[tag=in_outer_area] slow_falling 10 1
# 清除区域标签
/tag @a remove in_core_area
/tag @a remove in_mid_area
/tag @a remove in_outer_area
性能优化提示
在使用距离选择器时,尽量缩小选择范围以提高游戏性能。特别是在高频命令方块中,避免使用过大范围的 @e 选择器。