为什么不立即应用旋转?

我正在通过空间射击教程工作 ,我刚刚应用倾斜的玩家对象。 我注意到的一件事情是,倾斜不是立即应用的,而是可以看到玩家对象旋转到新的旋转位置。 为什么旋转似乎会随着时间的推移(也许是1/2秒),而不是立即?

我的期望是,当我设置一个属性的价值立即改变,而不是随着时间的推移。 我明白,立即捕捉到一个位置可能不是很理想,但我无法find解释我正在观察的行为的统一文档中的任何内容。 我的愿望是理解这种行为,以便我能够解释它并利用它,所以请提供任何支持文档的链接。

展示此行为的示例代码。

using UnityEngine; using System.Collections; public class PlayerControler : MonoBehaviour { void FixedUpdate(){ float moveHorizontal = Input.GetAxis ("Horizontal"); float moveVertical = Input.GetAxis ("Vertical"); rigidbody.velocity = new Vector3 (moveHorizontal, 0.0f, moveVertical); rigidbody.rotation = Quaternion.Euler (0, 0, rigidbody.velocity.x); } } 

尝试一下: Debug.Log(moveHorizontal) ,这对于发生的事情有很大的帮助。 如果您使用的是键盘,按d键时会发生什么情况,移动的水平不是从0.0f到1.0f。 它逐渐增加。 它从0.0f0.1f ,然后是0.3f ,等等,直到它最终变成1.0f 。 它被完全按下的最终价值。

这意味着你的速度正在逐渐改变。 你的旋转是基于你的速度,所以这意味着你的旋转逐渐改变,而不是立即改变。

如果你想让它捕捉到一个旋转和速度,而不是逐步移动,请尝试:

 move = move > 0.0f ? 1.0f : (move < 0.0f ? -1.0f : 0.0f); /* equivilant to: * if (move > 0.0f) move = 1.0f; * else if (move < 0.0f) move = -1.0f; */ 

引用一个文档: Unityinput管理器 ,向下滚动到PropertiesFunction表。 你可以在表格中看到:

 Negative Button The button used to push the axis in the negative direction. Positive Button The button used to push the axis in the positive direction. 

如上所述,按下一个键将“推”该轴的方向。 它没有设置轴,它逐渐改变它。 这导致类似于在操纵杆上的东西。 为了把操纵杆放在右边,你必须把它推到那里。 在键盘上,他们模仿推动行动。 导致跨input系统的一致性。