current | 当前值。 |
target | 目标值。 |
currentVelocity | 使用此参数指定初始速度,以便将当前值移动到目标值。此方法根据此移动和平滑阻尼更新 currentVelocity。 |
smoothTime | 当前值达到目标值所需的近似时间。smoothTime 越低,当前值越快达到目标值。smoothTime 的最小值为 0.0001。如果指定的值更低,则会被钳制到最小值。 |
maxSpeed | 使用此可选参数指定最大速度。默认情况下,最大速度设置为无穷大。 |
deltaTime | 自上次调用此方法以来的时间。默认情况下,它设置为 `Time.deltaTime`。 |
float 向目标值移动一步后的当前值。
在指定的时间内,以指定的速度逐渐将当前值移动到目标值。
此方法使用类似于弹簧阻尼器的算法将当前值平滑地移动到目标值。此算法基于 Game Programming Gems 4,第 1.10 章。
注意:此方法尝试避免越过目标值。当 deltaTime 为 0.0f 时,这会为 currentVelocity 生成 NaN。如果使用 NaN 的 currentVelocity 回调,此方法将返回 NaN。
using UnityEngine;
public class Example : MonoBehaviour { // Smooth towards the height of the target
public Transform target; float smoothTime = 0.3f; float yVelocity = 0.0f;
void Update() { float newPosition = Mathf.SmoothDamp(transform.position.y, target.position.y, ref yVelocity, smoothTime); transform.position = new Vector3(transform.position.x, newPosition, transform.position.z); } }