在做些穷举蠢事情...
情况大概是这样的,
准备做个360度*180度的raycasting,所以就不用船了
在把玩家每个横向角度变为对应分数之后
(暂时忽略纵向/上下角度)
设置当玩家角度分数=275,
也就是当玩家面向east,往south偏移5度时
发射一个往那个角度的雪球,NoGravity
速度为1m/s
然后用三角函数算出玩家275度时,
设置Motion为[ 0.9961946981d, 0.0d, 0.08715574275d ]
虽然entitydata获得的Motion不相同
到这里都没什么大问题,
但是当我把速度提升为10m/s的时候
设置Motion为[ 9.961946981d, 0.0d, 0.8715574275d ]
entitydata获得的Motion不相同
实际情况是
发射的角度没变 为270度
速度变快了
显示的发射角度变了,~为280度
entitydata获得的Motion不相同 [ 9.86232760619453d, 0.0d, 0.8628418615368193d ] 计算后~为280度
所以问题是entitydata获得的Motion为什么会不相同。
还有速度变快的时候,实际显示的雪球出现差异
求问有解决办法吗?
补图

速度为1m/s时,显示正确,符合270度

速度提升后,显示错误,符合280度,实际角度无变化,爬行者就是证明...

emmm.....一个无视雪球碰撞的爬行(伪)
情况大概是这样的,
准备做个360度*180度的raycasting,所以就不用船了
在把玩家每个横向角度变为对应分数之后
(暂时忽略纵向/上下角度)
设置当玩家角度分数=275,
也就是当玩家面向east,往south偏移5度时
发射一个往那个角度的雪球,NoGravity
速度为1m/s
然后用三角函数算出玩家275度时,
设置Motion为[ 0.9961946981d, 0.0d, 0.08715574275d ]
虽然entitydata获得的Motion不相同
到这里都没什么大问题,
但是当我把速度提升为10m/s的时候
设置Motion为[ 9.961946981d, 0.0d, 0.8715574275d ]
entitydata获得的Motion不相同
实际情况是
发射的角度没变 为270度
速度变快了
显示的发射角度变了,~为280度
entitydata获得的Motion不相同 [ 9.86232760619453d, 0.0d, 0.8628418615368193d ] 计算后~为280度
所以问题是entitydata获得的Motion为什么会不相同。
还有速度变快的时候,实际显示的雪球出现差异
求问有解决办法吗?
补图

速度为1m/s时,显示正确,符合270度

速度提升后,显示错误,符合280度,实际角度无变化,爬行者就是证明...

emmm.....一个无视雪球碰撞的爬行(伪)
楼主我可以问个问题吗?新人等级低发不了帖,而且看你也是个老手了;就是才开始我先用b站账号登录,后来发现没什么用,就直接注册了一个账号,但是为什么一点bilibili登录就直接登录这个号了?我也没绑定啊qwq。我又创了一个新号,点bilibili登录还是登录另一个号,而不是新号。
麻烦楼主了qwq
麻烦楼主了qwq
我虽然对此没什么研究但想强答一发,就当是提供一点思路吧。
因为我最近在玩一些模组的时候,发现里边添加的一些远程武器(比如弓箭、弩箭),有时候会斜着发出箭但实际上真正的箭还是直线发出的;甚至连一些本来应该发出无视重力的光束的武器 (没错我说的是embers的那个枪)也会这样,发出的光束看起来是斜着飞走了但却能打中我原来瞄准的目标。结合你的测试我觉得这可能是一个mc的bug,就是当实体motion值过高时会出现显示错误,真正的位置和看到的位置不重合。
至于怎么解决……这个我就不清楚了,还望有大神来解答。
因为我最近在玩一些模组的时候,发现里边添加的一些远程武器(比如弓箭、弩箭),有时候会斜着发出箭但实际上真正的箭还是直线发出的;甚至连一些本来应该发出无视重力的光束的武器 (没错我说的是embers的那个枪)也会这样,发出的光束看起来是斜着飞走了但却能打中我原来瞄准的目标。结合你的测试我觉得这可能是一个mc的bug,就是当实体motion值过高时会出现显示错误,真正的位置和看到的位置不重合。
至于怎么解决……这个我就不清楚了,还望有大神来解答。
问一下 你summon雪球的指令是cb还是function执行的?
如果是function 那么是cb执行的还是成就循环执行的还是gamerule执行的?
如果是function 那么是cb执行的还是成就循环执行的还是gamerule执行的?
至于Motion变了 恐怕是空气阻力
chyx 发表于 2017-9-25 02:49
问一下 你summon雪球的指令是cb还是function执行的?
如果是function 那么是cb执行的还是成就循环执行的还 ...
角度检测是rcb,用function
summon是根据角度分数,目前用的是rcb
到时候准备都移到function 用gamerule loop
chyx 发表于 2017-9-25 03:05
至于Motion变了 恐怕是空气阻力
又做了点测试...当速度提升导致Motion
的某个数值Motion小于-10或大于10时
那个超出的Motion会被视为0...
比如 10 0 10 会以south往west的45度发射
但 10.000001 0 10.00001 就会视为 0 0 0 完全静止
所以...
感觉因为计算范围是-10 ~ 10,然后
如果超过范围的话,会被算为0
如果在计算范围值内但速度过快的话,会出现显示偏差...
好坑...
你那句变化成比例没看懂...