【问题标题】:Jump is not smooth, more like teleportation跳跃不流畅,更像是瞬移
【发布时间】:2019-03-30 14:30:27
【问题描述】:

正如标题所说,我的播放器更像是跳跃,但我没有找到答案。我用这是我的代码

void Jumping()
{
    if (Input.GetKeyDown(KeyCode.Space) && currentJumps <= maxJumps)
    {
        rb.AddForce(Vector3.up * jumpForce, ForceMode.Impulse);
        currentJumps++;
    }
}

【问题讨论】:

  • Jumping()函数是如何调用的?
  • 你的意思是在哪里?我在 Update 和 FIxedUpdate 中尝试过...当这就是你的意思时
  • 是的,你能给我们一些关于Jumping() 被调用的位置和方式的上下文吗?如向我们展示更多代码。
  • 对不起,我不能跟着你
  • 是的,这就是我所指的。因此,如果在FixedUpdate() 中检查是否按下了空格,为什么还要再次检查Jumping()?这可能与您的问题无关,但根据提供的信息会让人感到困惑。

标签: c# unity3d


【解决方案1】:

Input.GetKeyDown 需要从您的 Update() 函数中调用,并且物理力应该在您的 FixedUpdate() 函数中应用。

GetKeyDown 仅在它发生的一帧中为真。 FixedUpdate 可能会或可能不会在该帧期间运行。所以,永远不要使用 GetKeyDown(或任何其他类似的 Down 和 Up 输入选项)在 固定更新。 https://forum.unity.com/threads/fixedupdate-and-input-getkeydown.56862/

例如这可能会使您的代码看起来像这样:

private bool _jumping;

void Update()
{
    if (Input.GetKeyDown(KeyCode.Space))
        _jumping = true;
    else if (Input.GetKeyUp(KeyCode.Space))
        _jumping = false;
}

void FixedUpdate()
{
     if (_jumping) rb.AddForce(Vector3.up * jumpForce, ForceMode.Impulse);
}

另请注意:

Input.GetKeyDown

在用户开始按下按键的帧期间返回 true 按名称标识。 https://docs.unity3d.com/ScriptReference/Input.GetKeyDown.html

Input.GetKey

当用户按住由名称标识的键时返回 true。 https://docs.unity3d.com/ScriptReference/Input.GetKey.html

Input.GetKeyUp

在用户释放由标识的键的帧期间返回 true 姓名。 https://docs.unity3d.com/ScriptReference/Input.GetKeyUp.html


我通常如何实现跳跃:

我倾向于使用GetKeyDown来检测跳转的开始,检查_jumping是否为假,设置为真。

我有一个浮点值,它是我的跳跃力乘数(你的jumpForce),它从高处开始,并在整个跳跃过程中减小。

我在FixedUpdatejumpForce = Mathf.Max(jumpForce - jumpDecay * Time.fixedDeltaTime, 0) 中减少了这个。

如果检测到Input.GetKeyUp_jumping == true,则设置jumpForce = 0(停止跳跃)

在与地面碰撞时,将_jumping 设置为false 并设置jumpForce = maxJumpForce

FixedUpdate 中,检查是否_jumping 然后使用我们的jumpForce 施加力。

这会导致你保持跳跃的时间越长,跳跃的时间越长,类似于马里奥和空洞骑士之类的游戏

【讨论】:

    猜你喜欢
    • 2023-01-23
    • 2014-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-20
    • 1970-01-01
    • 2021-07-05
    相关资源
    最近更新 更多