【问题标题】:Assigning directly velocity vs AddForce()直接分配速度与 AddForce()
【发布时间】:2018-10-29 20:04:39
【问题描述】:

您有大量关于应用速度、模拟跳跃的教程和 cmet,它们都是相互矛盾的。例如,在 youtube 的“Better Jumping in Unity With 四行代码”中阅读 cmets 有人说您应该避免直接分配速度。

这就是我想要做的,(= 只使用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,
}

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

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

是的,我有 RTFM,但我不理解他们的样本(它使用了官方认为已过时的 GUI.Button...)。

【问题讨论】:

  • 您的问题是什么? (通常以? 结尾)
  • @Draco18s "何时何时不直接分配速度"???
  • 有时你希望不同质量的物体给玩家带来不同的“感觉”。这时候你应该使用武力。有时你不关心质量,只是希望它达到一定的速度。那是你应该使用速度的时候。人们说要避免设置速度,因为当您有部分代码忽略对象的质量时,很难让弹簧常数、质量、摩擦常数和其他物理属性看起来正确,因为它们直接设置速度。
  • @Confused 您可以(复制所有 cmets)+(将它们粘贴到答案中)。这对我来说应该足够了。我的另一个(隐藏的)问题是:从长远来看,它是否可持续? (尽管 Unity 团队的长期工作永远不会超过 3 个月(笑话))
  • 我并没有真正想到我所说的作为答案。尽管我很乐意建议滥用物理学。我得到了关于 Unity 刷新和不一致的笑话。我愿意。我愿意,我的天,我愿意。

标签: unity3d


【解决方案1】:

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

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

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

另外,您是对的,将AddForceVelocityChange 一起使用等同于直接分配速度。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多