diff --git a/sqr/Core/BaseTool/Math.nut b/sqr/Core/BaseTool/Math.nut index 3a4ae83..d6df687 100644 --- a/sqr/Core/BaseTool/Math.nut +++ b/sqr/Core/BaseTool/Math.nut @@ -319,20 +319,19 @@ class Math { } function sq_GetAccel(sv, ev, currentRate, maxRate, increaseFeature) { - local rate = currentRate.tofloat() / maxRate.tofloat(); - local varyValue = ev - sv; local increaseRate = 1.0; - if (increaseFeature) { increaseRate = pow(50, rate) / 50; //慢->快 } else { - increaseRate = pow(rate, 0.05); + // 修正后的减速逻辑计算,例如采用线性变换结合幂次运算来实现更合理的减速效果 + // 先将rate映射到一个更合适的范围(这里从[0,1]映射到[0.1, 1],可调整) + local mappedRate = rate * 0.9 + 0.1; + increaseRate = pow(mappedRate, 2); // 幂次可调整,这里取2来让减速更明显,可根据实际情况修改 } - return sv + varyValue * increaseRate; }