每一帧的阻力模拟使用哪个公式?

问题描述 投票:1回答:1

我的刚体具有速度,我定义了一个变量 float drag = 0.995f 这样一来。

void FixedUpdate(){
    rb.velocity *= drag;
}

它的工作正常,但我想我必须要用。Time.deltaTime 以使拖动时间一致,所以我的问题是如何写一个时间一致的拖动公式?我是否应该直接设置 drag 作为一个真正的大值,并写上 rb.velocity *= drag * Time.deltaTime 并调 drag 直到我满意为止?

我只是想用 rb.velocity *= (1 - drag * Time.deltaTime) 而且看起来工作得很好。

unity3d physics
1个回答
1
投票

两者都可以工作.

由于你使用的是 FixedUpdate 你也会想使用 固定时间 而不是 deltaTime.

rb.velocity *= drag * Time.fixedDeltaTime;
rb.velocity *= (1 - drag * Time.fixedDeltaTime);

你用哪个公式,其实是看个人喜好的。要知道第一个公式会随着阻力值的增加而减少实际阻力。

© www.soinside.com 2019 - 2024. All rights reserved.