簡體   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