簡體   English   中英

Unity 2D 為什么我的角色每次跳的高度都不一樣?

[英]Unity 2D Why does my character jump different heights every time?

所以,我的跳躍是不一致的,基本上,每次我按空格鍵時,角色都會跳躍不同的高度,即使是靜止不動(不向左和向右移動),這是為什么呢?

這是我的代碼:

public bool onGround = false;
public float JumpHeight;
public Rigidbody2D gravidade;
// Start is called before the first frame update
void Start()
{
    
}



// Update is called once per frame
void Update()
{
    if (onGround == true)
    { 
        if (Input.GetKey(KeyCode.Space))
        {
            gravidade.AddForce(new Vector2(0, JumpHeight * Time.deltaTime), ForceMode2D.Impulse);
         
        }
    }
}
void OnCollisionEnter2D(Collision2D outro)
{
    if (outro.gameObject.CompareTag("ground"))
    {
        onGround = true;
    }
}
void OnCollisionExit2D(Collision2D outro)
{
    if (outro.gameObject.CompareTag("ground"))
    {
        onGround = false;

    }
}

施加一次性力時,不應乘以增量時間。

Time.deltaTime是自上一幀以來的時間完成時間(以秒為單位)。 檢查文檔

這個時間不是恆定的。 MonoBehaviour.FixedUpdate 使用的是 fixedDeltaTime 而不是 deltaTime,這個 fixedDeltaTime 和FixedUpdate通常用於物理,是一個相當高級的話題。

使用常量值而不是Time.deltaTime以始終具有相同的跳躍高度。

它是不同的,因為它是根據 deltaTime 計算的,它是不一致的(如果我沒記錯的話,兩個渲染幀之間的時間),並且每次都會產生略有不同的值,與乘法相結合與平均值的偏差更大。 希望我能幫助澄清這一點,干杯!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM