【问题标题】:Different values of force applyed with AddForce don't change the speed of the gameobject使用 AddForce 施加的不同力值不会改变游戏对象的速度
【发布时间】:2014-01-30 03:57:06
【问题描述】:

我正在学习如何使用 Unity3D,但我遇到了动画问题。我有一个 GameObject,这是我的角色,我希望他跳。首先,我使用了键盘输入,空格键。

jumpForce 是公共浮点变量,其值为 700

if (grounded && Input.GetKeyDown(KeyCode.Space)) {
    anim.SetBool("Ground", false);
    rigidbody2D.AddForce(new Vector2(0, jumpForce));
}

然后我尝试从 XBox360 Controller Pad 获取输入,一切都很好。但是使用相同的代码(只是将控制器的 GetKeyDown 更改为 GetButton),角色会跳得更高。使用控制器时,达到的最大速度为 53(我得到了刚体 2D.velocity.y 的值),但使用键盘时,该值至少为 13。 如果我更改 jumpForce 的值,则没有任何反应,值保持不变,但如果我将其设置为 0,则角色不会跳跃。

我想知道变量 jumpForce 和函数 AddForce 的效用是什么,如果它不改变速度的值的话。谢谢

【问题讨论】:

  • 你确定你输入了if?
  • 当然,因为如果我将 jumpForce 设置为 0,角色根本不会跳跃。

标签: c# unity3d


【解决方案1】:

试试:

rigidbody2D.AddForce(Vector2.up * jumpForce);

请注意,Unity's community site或许可以得到更全面的解答

【讨论】:

    【解决方案2】:

    如果您在处理物理时尝试不同的行为,那么您可能使用Update 而不是FixedUpdate,也就是说,您以不同的速率施加力。

    根据documentation:

    在处理刚体时应使用FixedUpdate 而不是Update。例如,当向刚体添加力时,您必须在 FixedUpdate 内的每个固定帧上施加力,而不是在 Update 内的每个帧上施加力。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-15
      • 2019-05-11
      相关资源
      最近更新 更多