Mathf.SmoothDamp
Declaration
public static float SmoothDamp(float current, float target, ref float currentVelocity, float smoothTime, float maxSpeed = Mathf.Infinity, float deltaTime = Time.deltaTime);Параметры
| Параметр | Описание |
|---|---|
| текущий | Текущее значение. |
| Цель | Целевое значение. |
| currentVelocity | Используйте этот параметр, чтобы указать начальную скорость для перемещения текущего значения к целевому значению. Этот метод обновляет currentVelocity на основе этого движения и гладкой амортизации. |
| smoothTime | Примерное время, необходимое для того, чтобы текущее значение достигло целевого значения. Чем ниже smoothTime, тем быстрее текущее значение достигает целевого значения. Минимальное значение smoothTime составляет 0.0001. Если указано более низкое значение, оно зажимается до минимального значения. |
| maxSpeed | Используйте этот дополнительный параметр, чтобы указать максимальную скорость. По умолчанию максимальная скорость установлена на бесконечность. |
| deltaTime | Время, прошедшее с момента последнего вызова этого метода. По умолчанию это значение равняется `Time.deltaTime`. |
Возвращаемое значение
поплавок Текущее значение после перемещения на один шаг к целевому значению.
Описание
Постепенное приближение текущего значения к целевому значению в течение указанного времени и с указанной скоростью.
Этот метод сглаживает текущее значение в направлении целевого значения с помощью алгоритма, похожего на пружинную амортизацию. Этот алгоритм основан на Game Programming Gems 4, Глава 1.10.
Примечание: Этот метод пытается избежать превышения целевого значения. Когда deltaTime равняется 0.0f, это приводит к NaN для currentVelocity. Если вы вызываете обратно currentVelocity из NaN, этот метод возвращает 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); } }