版本: Unity 6 (6000.0)
语言英语
  • C#

Mathf.SmoothDamp

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交内容,但我们会阅读用户提出的每项更改建议,并在适用时进行更新。

关闭

提交失败

由于某些原因,您的更改建议无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

切换到手册

声明

public static float SmoothDamp(float current, float target, ref float currentVelocity, float smoothTime, float maxSpeed = Mathf.Infinity, float deltaTime = Time.deltaTime);

参数

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); } }