繁体   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