众所周知 50a加入了局部坐标这一概念(参见新闻版和这里)
我刚刚用这个做出检查鼠标指针指的石头
花了我大约5分钟
没有使用任何marker实体/记分板/nbt
只用了3个指令 1个函数(其中一个指令是可以省略的)
- #chyx:ray
- execute unless entity @s[distance=..6] run say none
- execute if entity @s[distance=..6] if block ~ ~ ~ stone run say 1
- execute if entity @s[distance=..6] unless block ~ ~ ~ stone positioned ^ ^ ^0.005 run function chyx:ray
原理很好懂 就是如果检查距离超过了6格 那么放弃 并且输出none
如果发现石头 那么就停止 并且输出1
如果仍未发现 那么往前进0.005(可自行在速度和准确度上决定)
当然 如果你不需要输出none 那么第一个指令可以省掉的
当然咯 因为玩家的眼睛离他的原点有一些距离
游戏里使用的时候应该输入execute as @a at @s anchored eyes positioned ^ ^ ^ anchored feet run function chyx:ray(由命令方块时)
或者execute anchored eyes positioned ^ ^ ^ anchored feet run function chyx:ray(聊天栏)
将命令更新到了最新版本的格式
原文内容附在如下
—— SPGoding
