末地探险者
本帖最后由 末地探险者 于 2020-4-3 21:42 编辑

  1. summon armor_stand 0.0 0.0 0.0 {Tags:["track_work"],Rotation:[0.0f,0.0f],NoGravity:true,Invisible:true,Marker:true}
  2. execute as @p anchored eyes at @p run summon arrow ^ ^ ^ {Motion:[0.0,0.0,0.0],NoGravity:true,pickup:false,Silent:true,damage:-1.0,Tags:["track_sel"]}
  3. execute as @e[tag=track_work] at @s rotated as @p anchored feet run tp ^ ^ ^10
  4. execute as @e[tag=track_sel] store result entity @s Motion[0] double 1 run data get entity @e[tag=track_work,limit=1] Pos[0]
  5. execute as @e[tag=track_sel] store result entity @s Motion[1] double 1 run data get entity @e[tag=track_work,limit=1] Pos[1]
  6. execute as @e[tag=track_sel] store result entity @s Motion[2] double 1 run data get entity @e[tag=track_work,limit=1] Pos[2]
  7. tellraw @a {"entity":"@e[tag=track_sel]","nbt":"Motion[0]"}
  8. kill @e[tag=track_work]
复制代码


照理来说本function生成的箭即是十字准星指向的位置
但是总有误差,不知道怎么分析误差来源(经测试,那个盔甲架y小于0照样工作!?,反正就是朝向地面也可以)

(已经看过https://www.mcbbs.net/thread-919112-1-1.htmlhttps://www.mcbbs.net/thread-917613-1-1.html
只是想要更简单的解决方案




2021.12 数据,可能有更多内容 本帖最后由 末地探险者 于 2020-4-3 21:42 编辑

代码:


  1. summon armor_stand 0.0 0.0 0.0 {Tags:["track_work"],Rotation:[0.0f,0.0f],NoGravity:true,Invisible:true,Marker:true}
  2. execute as @p anchored eyes at @p run summon arrow ^ ^ ^ {Motion:[0.0,0.0,0.0],NoGravity:true,pickup:false,Silent:true,damage:-1.0,Tags:["track_sel"]}
  3. execute as @e[tag=track_work] at @s rotated as @p anchored feet run tp ^ ^ ^10
  4. execute as @e[tag=track_sel] store result entity @s Motion[0] double 1 run data get entity @e[tag=track_work,limit=1] Pos[0]
  5. execute as @e[tag=track_sel] store result entity @s Motion[1] double 1 run data get entity @e[tag=track_work,limit=1] Pos[1]
  6. execute as @e[tag=track_sel] store result entity @s Motion[2] double 1 run data get entity @e[tag=track_work,limit=1] Pos[2]
  7. tellraw @a {"entity":"@e[tag=track_sel]","nbt":"Motion[0]"}
  8. kill @e[tag=track_work]



照理来说本function生成的箭即是十字准星指向的位置
但是总有误差,不知道怎么分析误差来源(经测试,那个盔甲架y小于0照样工作!?,反正就是朝向地面也可以)


(已经看过https://www.mcbbs.net/thread-919112-1-1.htmlhttps://www.mcbbs.net/thread-917613-1-1.html
只是想要更简单的解决方案






(=°ω°)丿
本帖最后由 (=°ω°)丿 于 2020-4-3 21:13 编辑

代码:

  1. execute as @e[tag=track_sel] store result entity @s Motion[0] double 0.01 run data get entity @e[tag=track_work,limit=1] Pos[0]
我觉得可能是 0.01 的问题,execute store 的命令返回值是整数。
【CBL|SPG】[1.14.4] 命令返回值列表
https://www.mcbbs.net/thread-808124-1-1.html
还有一件事,@人要在后面加空格。

末地探险者
本帖最后由 末地探险者 于 2020-4-3 21:17 编辑
(=°ω°)丿 发表于 2020-4-3 21:07
我觉得可能是 0.01 的问题,execute store 的命令返回值是整数。
【CBL|SPG】[1.14.4] 命令返回值列表
http ...

改了改了

我0.01只是为了放慢速度截图看一下

原来就是1你可以看一下图

如果是整数的话emmm我看看
@(=°ω°)丿

emmm这个返回值指的是execute成功与否
store是照样工作的
(参见小豆的数学库)



(=°ω°)丿
末地探险者 发表于 2020-4-3 21:11
改了改了


我0.01只是为了放慢速度截图看一下

试试?

代码:

  1. summon armor_stand 0.0 0.0 0.0 {Tags:["track_work"],Rotation:[0.0f,0.0f],NoGravity:true,Invisible:true,Marker:true}
  2. execute as @p at @s anchored eyes run summon arrow ^ ^ ^ {Motion:[0.0,0.0,0.0],NoGravity:true,pickup:false,Silent:true,damage:-1.0,Tags:["track_sel"]}
  3. execute as @e[tag=track_work] at @s rotated as @p anchored feet run tp ^ ^ ^10
  4. execute as @e[tag=track_sel] run data modify entity @s Motion set from entity @e[tag=track_work,limit=1] Pos
  5. tellraw @a {"entity":"@e[tag=track_sel]","nbt":"Motion[0]"}
  6. kill @e[tag=track_work]

末地探险者
(=°ω°)丿 发表于 2020-4-3 21:07
我觉得可能是 0.01 的问题,execute store 的命令返回值是整数。
【CBL|SPG】[1.14.4] 命令返回值列表
http ...


这是小豆的数学库的三角函数,里面用的就不是整数


末地探险者
本帖最后由 末地探险者 于 2020-4-3 21:28 编辑

怎么说呢

非常妙!!准确度非常高

简直媲美K_bai的视线追踪


我参悟您的教程居然没有想到直接复制整个数组
话说难道用execute 比使用 data 会降精确度吗

末地探险者
(=°ω°)丿 发表于 2020-4-5 08:54
举个例子,假设 Pos[0] 的值为 123.45d,命令的具体执行过程是这样的:

1. 运行命令 data get entity @s P ...

但是换成double 1依然会出现精度缺失的问题
可以说完全比不上直接复制

末地探险者
(=°ω°)丿 发表于 2020-4-5 09:05
execute store result entity @s Motion[0] double 0.000001 run data get entity @s Pos[0] 10000
如果 ...

我去还有这种说法

实在是谢谢您了