Mouse Movement/zh: Difference between revisions

From Minecraft Parkour Wiki
Content added Content deleted
No edit summary
No edit summary
Line 107: Line 107:




/*在Entity.java中*/
/* 在Entity.java中 */
public void rotateEntity(float dX, float dY)
public void rotateEntity(float dX, float dY)
{
{
Line 130: Line 130:




在某些时候,偏航甚至可以 [https://youtu.be/DEI_CeFlatM 扰乱运动并使玩家停止在原地]。
<div lang="en" dir="ltr" class="mw-content-ltr">
At some point, yaw can even [https://youtu.be/DEI_CeFlatM mess with movement and stop the player in place].
</div>


这是因为偏航太大而无法转换为合适的角度(参见 [[Special:MyLanguage/Angles|角度]])。
<div lang="en" dir="ltr" class="mw-content-ltr">
This is because the yaw gets too large to be converted to a proper angle (see [[Special:MyLanguage/Angles|Angles]]).
</div>


这种现象发生在<math>|yaw| \geq 11796480 = 360 \times 2^{15}</math>时。
<div lang="en" dir="ltr" class="mw-content-ltr">
This phenomenon happens when <math>|yaw| \geq 11796480 = 360 \times 2^{15}</math>.
</div>




<math display="inline">|yaw| > 8.59 \times 10^9</math>时,可能会导致游戏崩溃
<div lang="en" dir="ltr" class="mw-content-ltr">
Turning even further can crash the game, when <math display="inline">|yaw| > 8.59 \times 10^9</math>
</div>

Revision as of 11:47, 1 October 2021

Other languages:

鼠标移动表示光标在屏幕上的瞬时位移(以像素为单位): ()。

在《我的世界》中,鼠标移动代表视角的即时旋转(以角度表示): ()。



灵敏度

灵敏度(s)是一个参数,用于改变视角的旋转速度。

可以在“控制”菜单中更改此设置。

  • 默认灵敏度为"100%" ()
  • 原版中最低的灵敏度是"0%" ()
  • 原版中最高的灵敏度是"200%" ()


在1.8中, 计算如下:

以同样的方式获得,如果打开了“鼠标反转”,则乘以-1。


在默认灵敏度下(),鼠标移动一个像素转换为0.15°旋转。

这意味着视角以0.15°的增量移动:如果要转45°,则需要移动鼠标300px。


此外,s理论上并不受 [0,1] 的限制,它可以取任何值(甚至是负值)

您可以在 options.txt ( .minecraft 文件夹中)中手动编辑 mouseSensitivity 的值

请注意,服务器上可能允许也可能不允许修改 options.txt 文件。



特殊的值

由于可以将灵敏度设置为我们想要的任何值,因此调整灵敏度以匹配特定的旋转增量可能会很有趣。

为了得到所需增量的灵敏度 ,我们可以使用逆公式:


此表列出了一些特殊的旋转增量,以及 s 的相应值。

s
-0.3333333
0.1° 0.3946504
0.15° 0.5
0.25° 0.6546926
0.5° 0.9115013
1.2350600
45° 5.2452746
180° 8.5221547


偏航和俯仰

偏航(水平旋转)和俯仰(垂直旋转)是跟踪实体头部旋转的浮点数

转向是将偏航限制在[-180,180],如F3所示。俯仰角自然夹在[-90,90]之间。

鼠标移动直接修改玩家的偏航和俯仰:

/* In EntityRenderer.java */
public void updateMouseMovement(...)
{
    ... //忽略前面的代码

    float f = this.mc.gameSettings.mouseSensitivity * 0.6F + 0.2F;
    float mult = f * f * f * 8.0F;
    float dX = (float)this.mc.mouseHelper.deltaX * mult;
    float dY = (float)this.mc.mouseHelper.deltaY * mult;

    int i = 1;
    if (this.mc.gameSettings.invertMouse)
        i = -1;

    ... //如果为平滑相视角则应用过滤器

    this.mc.thePlayer.rotateEntity(dX, dY*i);
}


/* 在Entity.java中 */
public void rotateEntity(float dX, float dY)
{
    this.rotationYaw = this.rotationYaw + dX*0.15);
    this.rotationPitch = this.rotationPitch - dY*0.15;
    this.rotationPitch = MathHelper.clamp(this.rotationPitch, -90.0, 90.0);
}


虽然俯仰角被限制在-90°和 90°之间,但偏航角并不像预想的那样限制在-180°和180°之间。

这意味着偏航是无限的,如果你故意朝一个方向转动足够长的时间,则会产生一些意想不到的后果。


由于它是一个浮点数,所以它的精度会随着它变大而变差,以至于它在大值时变得明显不稳定。

  • ()它只能以0.5°的增量增加。
  • ()它只能以1°的增量增加。


在某些时候,偏航甚至可以 扰乱运动并使玩家停止在原地

这是因为偏航太大而无法转换为合适的角度(参见 角度)。

这种现象发生在时。


时,可能会导致游戏崩溃