你所在位置:手游论坛>迷你世界>攻略>正文

描述“使玩家朝方向运动”的位移函数

精华 原创 已解答 处理中 置顶
520
25
32
登录可见
1楼
楼主: 发表于 2024-02-24 17:30:07 河南 修改于 2024-02-24 17:37:34 来自 4399游戏盒
举报
在不久之前,我尝试追寻下落速度与触发器中“使玩家朝方向移动”中的【速度】参数的关系。并且初步的发现,该动作可以抵消下落速度。遗憾的是,由于新版本引起的bug,导致该动作出现了异常,因此新版本暂时不再能够平衡。
本帖将会提及:空气减速度,位移函数

  位移函数的推导由FTL大佬独自完成
于是只能通过下载迷你世界老版本(彩虹引擎之前的版本),进行实验、获取数据进行分析。

我以前曾发过关于“下落速度”的帖子下落速度与移动速度的关系↑该帖子记录了一些打点数据,并且对打点数据做出了分析。数据是在老版本中得到的

我们知道,用触发器给玩家一个速度。玩家会运动,最终停下。玩家从开始运动到停下需要的时间是非常短的,因此以前并没有人详细观察过这一运动的过程。
于是,我们就会很容易地误以为“使玩家朝方向运动”就是给玩家一个初速度,然后玩家做匀减速运动直到停下;玩家在下落时会像做自由落体那样做匀加速运动。当这个“匀减速”与“匀加速”相抵消,玩家便会静止在空中。
事实上,这并不正确。这只能说明“自由下落”和“触发器给予速度”它们是同一个运动体系。
可是,凭什么说他不对呢?
下面这个事实就可以说明:
----------------------

根据运动的独立性,玩家在水平方向的运动,与玩家在竖直方向的运动,是相互不影响的。
那么按理说,我们即使不平衡下落,直接在空中给玩家一个向前的速度,然后对玩家位移进行打点,得到的结果会与平衡下落条件下的打点相同。
然而,事实完全不一样。
我们在平衡重力状态下给玩家一个向前的速度(大小1),玩家最终会在9.02格的位置停下。我们在不平衡重力的情况下,同样给玩家一个向前的速度,玩家在7格左右就已经停下。并且两种情况下玩家位移的减小量是完全不同的。
-----------

这一个事实可以说明:玩家的运动受到“空气阻力”的影响。即迷你存在空气阻力。并且它的影响并不是可忽视的。
空气阻力提供了减速度,使得玩家的任何运动都并不是一个匀加速运动。

我们认识了空气减速度的存在,就可以解释刚刚“事实”中的现象发生的原因。
(详见下图)
①下落速度未被平衡,玩家在开始运动的时刻,受到向前的速度v0,向下的速度v↓
两个速度合成使得玩家朝右下方运动,速度为vφ。
②空气使玩家被施加与运动方向相反的速度,这个速度由空气提供,大小为vf。
③vf的分解使在玩家在x方向上真实的运动为v0-vfx。在第二个时刻,上面的过程重复。直到玩家停下
(游戏中的运动时刻是0.05秒,即1/20秒)
于是,上述的“事实”的差异发生了。

这意味着,想要研究运动体系,前路是更崎岖的。我在大佬的帮助下,只能够在与他共同的研究的过程中,逐步破解运动的奥秘。
于是,本帖的主角就是一个稍有突破的成就了

       使玩家朝方向运动的位移函数


---------以下为正篇----------
我们在上一个帖子中已经发现:
玩家下落过程中,下落速度并非一直增加。而是存在最大速度。
(引用“1000格下落打点”数据,详情找ftl)
玩家在下落非常长时间后,取四个打点位置
,进行计算。玩家在此时与之后,每时刻的位移不再改变,为1.94。我们以秒为单位,算出速度为
38.8格/秒。

这是一个准确的数值。它是玩家自由下落的最大速度。后续为了方便把它称为“终速度”


终速度的存在也侧面印证了“空气加速度”的正确性。

随后,由大佬FTL分析这个实验。发现空气加速度与玩家运动的当前速度是相关的。
FTL在分析过程中,认为这与现实中物体的下落有相似性。于是猜测玩家受到的阻速度(即空气阻力提供的瞬时速度)与玩家的瞬时速度的关系为kv

然后他嵌套了一些函数,最终经过漫长的计算与求和。得出了下面的公式

X=V{9.05 (1-ℯ^(-(2.29t)))}

也就是这个样子公式的解释:
使玩家朝方向运动,速度为v
则玩家在该方向的位移与时间的关系为
x=V{9.05 (1-ℯ^(-(2.29t)))}
(原点为参考系)
该函数的准确性极高,与所得的数据只在小数位上略微差别。

这是100速度位移的打点。
0/98/185.39/263.33/332.84/394.82/450.1/499.4/543.37/582.57/617.54/648.73/676.54/701.34/723.46/743.19/760.78/776.46/790.45/802.92/814.05/823.97/832.82/840.71/847.75/854.03/859.63/864.62/869.07/873.04/876.58/879.73/882.55/885.06/887.3/889.3/891.08/892.67/894.09/895.35/896.48/897.48/898.37/899.17/899.88/900.51/901.08/901.59/902.04/902.44/902.79/903.11/903.39/903.65/903.88
而这是使用公式,得到的结果
(代入v=100)到原式其实,差的不多…
所以勉强可以用来计算落点。

这个函数的图像是这样的
(取v=1)函数可以分为两段,第二段的变化率接近为0。该函数图像中,t在2.5及以后,得到的X值都为9.0406。
可悲的是,FTL今天就开学了
所以好多问题没办法继续回答
他只留下了这么一个“遗产”

但是为了让这个水帖更长一点,让我来为你们补充。

①该函数中,当V为正数时函数的结果与V为负数时函数的结果刚好完全相反。
于是我们就可以说:
使玩家朝方向运动,速度为-V。它等效于
玩家朝方向相反运动,速度为V。

②在同一时刻,使玩家朝方向运动,速度为
v0;使玩家朝方向运动,速度为v1。等效于
使玩家朝方向运动,速度为(v0+v1)

也就是说速度可以取负,可以叠加。是和正常的数是一样运算的。
至于速度是否能够向矢量那样运算,这是当然可以的,任何一个触发器都可以表明这个事实。但是,由于空气阻速度存在,合成速度是相当麻烦的。

相同时刻叠加的速度,他们是直接叠加的。
不同时刻叠加的速度,他们要分开计算。这需要用到求和(我不会

有了这个东西,我们就可以计算比较准确的每个时刻的位置了。


由于当前版本,下落速度存在bug不能够被正常抵消的原因。这个公式暂时只能够用来计算速度,并且是水平的,并且是1倍重力下的。暂时不能够用来计算下落位置。

因为我们都不知道新版本会不会修,修改之后速度体系又会变成什么样

谢谢各位,也甭管看懂看不懂
这东西挺累的。
点个赞吧! @FTLMs
点赞
------------ 25人已赞 ------------