直接分配速度与 AddForce()

Oli*_*ons 3 unity-game-engine

你有大量的教程,以及关于应用速度、模拟跳跃的评论,它们都是矛盾的。例如,在 youtube 上阅读“Better Jumping in Unity With Four Lines of Code”中的评论时,有人说您应该避免直接分配速度。

这就是我想要做的,(= 仅使用AddForce()),他们(Unity 团队)添加了另一种强制模式,所以这里是可用的选项:

public enum ForceMode
{
    /// <summary>
    ///   <para>Add a continuous force to the rigidbody, using its mass.</para>
    /// </summary>
    Force = 0,
    /// <summary>
    ///   <para>Add an instant force impulse to the rigidbody, using its mass.</para>
    /// </summary>
    Impulse = 1,
    /// <summary>
    ///   <para>Add an instant velocity change to the rigidbody, ignoring its mass.</para>
    /// </summary>
    VelocityChange = 2,
    /// <summary>
    ///   <para>Add a continuous acceleration to the rigidbody, ignoring its mass.</para>
    /// </summary>
    Acceleration = 5,
}
Run Code Online (Sandbox Code Playgroud)

我问的不是基于意见,而是:何时以及何时直接分配速度?

如果我没记错的话,这似乎VelocityChange可以替代直接分配速度。

是的,我有RTFM,但我不明白他们的样本(它使用的样本GUI.Button被官方认为是过时的......)。

Jul*_*xzs 5

这完全取决于您想要游戏的感觉。如果直接指定速度,则可以非常严格地控制对象的移动方式,而如果使用力,则可以根据对象的质量获得更真实的移动。

例如:如果您正在制作一款节奏非常快的游戏,其中抽搐输入很重要,那么您可能应该直接分配速度。

或者:例如,如果您正在制作一款滚动球的游戏,并且希望球由具有不同质量的不同材料制成,那么您可能会希望使用力来使运动可信。

另外,您对使用AddForcewithVelocityChange相当于直接分配速度的看法是正确的。