在特定时间段(此代码中的timeToDrain),我的水从最大值排放到0。我想知道的是为什么当我做类似的事情时,我根本无法修改此值(water
)
water += 1;
我的代码:
public float water,waterMax,w;
void ddrainWater() {
float timeToDrain = 160; //seconds
float timeRemaining = timeToDrain - w;
w += Time.deltaTime;
water = Mathf.Lerp(waterMax, 0, w / timeToDrain);
}
同样,我不确定如何解决类似问题。
预期:能够做到
water += 0.2f;
但是水一直在不断地变回Mathf.Lerp()
给它的值。有什么方法可以从此变量中添加/减去一个值?也许与变量“ w”有关?
答案 0 :(得分:1)
Lerp调用完全不 关心water
的当前值,它将基于w
覆盖它。
如果要添加水,则需要从w
中减去 或不使用Lerp,而是管理排水加快自己的速度。
我无法提供示例修复程序,因为您要如何处理事情就是您要如何处理事情(而且我没有您的所有代码)。
答案 1 :(得分:0)
当前,您正在通过water
将water += value
设置为新值,然后通过Lerp函数将其设置为另一个值,该值独立于water
的当前值而变化。
您可以选择以下一种方法:将w
减少一定的量(可能用{{1}替换water += value
),将w -= (waterMax / timeToDrain) * value
增加一些值(也许替换{{1 }}加上timeToDrain
),或将Lerp函数替换为使用当前水位而不是最大值的东西。
答案 2 :(得分:0)
如果您对自己说的话进行编码,实际上可以正常工作-通过自上次滴答后发生的排水来减少当前的水量:
var amountDrainedSinceLastCheck = waterMax * Time.deltaTime / timeToDrain;
water = water - amountDrainedSinceLastCheck;