我正在使用Mathf.SmoothDamp降低我的浮动速度,我成功了!但是我不知道如何加快这个浮标的值,我现在只想在一开始就缓慢地加速并达到最大速度极限,作为现实生活中的加速效果,汽车等!有人有什么想法吗?
Mathf.SmoothDamp使用的代码:
float speed, velocity;
void Update(){
//Used successfully to slow down
speed = Mathf.SmoothDamp(speed , 20f, ref velocity, 5f);
}
答案 0 :(得分:1)
我们可以简化夸脱功能,并且可以将输入反向钳位在0和1之间(也可以钳制输出):
public float EaseInQuart(float t) {
return Mathf.Pow(Mathf.Clamp01(t),4f);
}
public float InverseEaseInQuart(float x) {
return Mathf.Pow(Mathf.Clamp01(x),0.25f);
}
现在,我们可以采用当前速度,将其除以最大速度即可得出x
项。
使用InverseEaseInQuart
方法将其转换为线性t项,我们可以按deltaTime
进行缩放,并按某个acceleration
值进行缩放。
然后,我们使用EaseInQuart
转换回x,然后再次将其乘以最大速度,以得到新的当前速度。
总的来说,可以这样写:
public float maxSpeed = 25f;
public float speed = 0f;
public float acceleration = 0.1f; // (0 to maxSpeed in 10 seconds)
public float EaseInQuart(float t) {
return Mathf.Pow(Mathf.Clamp01(t),4f);
}
public float InverseEaseInQuart(float x) {
return Mathf.Pow(Mathf.Clamp01(x),0.25f);
}
void Update(){
float x = speed / maxSpeed;
float t = InverseEaseInQuart(x);
t += Time.deltaTime * acceleration;
x = EaseInQuart(t);
speed = x * maxSpeed;
}