[英]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.