繁体   English   中英

我在 Unity 2D 中正确实现跳转时遇到问题

[英]I'm having problems to implement jump properly in Unity 2D

我已经在 Unity 中为我的控制器编写了这段代码。 问题是 Y 轴上的跳跃与 X 和 Y 轴同时跳跃的高度不同。

// Update is called once per frame
void FixedUpdate()
{

    Debug.Log(rigidbody.velocity);

    float inputX = Input.GetAxis("Horizontal");

    //Movement X
    if(inputX != 0 && isGrounded)
    {
        animator.SetBool("isWalking", true);
        rigidbody.velocity = new Vector2(inputX*speed, 0);

        //Turn left & right
        if(inputX > 0)
        {
            spriteRenderer.flipX = false;
        } else if (inputX < 0)
        {
            spriteRenderer.flipX = true;
        }
    } else 
    {
        animator.SetBool("isWalking", false);
    }

    //Jump
    if(Input.GetAxis("Jump") > 0 && isGrounded)
    {
        rigidbody.AddForce(Vector2.up * jumpImpulse, ForceMode2D.Impulse);
    }
}

如果我理解你的代码是正确的,你只会在你在地面时给 X 施加力,所以我建议删除 isgrounded 变量并将它用于跳跃,例如在你的更新方法中

if(isGround){
  if(keypress == y){
    addforce in Y
  }
}

实际上我在统一中有点氧化,但我希望对逻辑有用

在跳跃物理方面,我自己很糟糕,但我发现这些链接也许会对你有所帮助。

unity 2d 跳跃脚本

https://answers.unity.com/questions/710765/2d-c-jump-script-addforce-1.html

我也想知道哪个跳跃更高。 你说过不移动和移动时跳跃时存在高度差异。 两者哪个跳得更高? 你真的确定一个比另一个跳得更高还是看起来像一个跳得更高? 如果可以的话,您可以通过对平台进行测试来进行测试。

抱歉,我无法提供更多帮助,只能推测可能导致问题的原因。 但是,我建议您在进行运动时将其乘以 Time.DeltaTime。 这使得移动时间基于而不是基于帧。 这将使运动感觉更流畅。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM