SmoothDamp同时降低规模?

时间:2016-03-17 23:19:45

标签: c# unity3d

如何在降低比例的同时SmoothDamp?例如,将范围从10 {1}减少到transform.position

以下是代码:

targetPosition

1 个答案:

答案 0 :(得分:0)

您可以使用Mathf.Lerp()Vector3.Lerp()等内容对值进行插值,具体取决于您尝试缩放的内容。

两个Lerp函数都取一个起始值,一个结束值和var scale = Mathf.Lerp(10f, 1f, t);,一个介于0和1之间的数字,用于计算' scale'在开始值和结束值之间。

Vector3.SmoothDamp

假设您想要在起点和终点之间以线性方式缩放t操作的MaxSpeed参数。 我们需要将总距离缩小到0到1之间的private float _totalDist; private Vector3 _targetPosition = Vector3.zero; private void Start() { _totalDist = Vector3.Distance(_targetPosition, transform.position); } 值:

首先,计算SmoothDamp路径要移动的总距离。存储它以便不会被修改。

t

然后,随着您的职位变化,您可以轻松获得private void Update() { var dist = Vector3.Distance(_targetPosition, transform.position); var t = Mathf.Clamp01(dist / _totalDist); ... 值:

...
   var speedScale = Mathf.Lerp(10f, 1f, t);
   transform.position = Vector3.SmoothDamp(transform.position, _targetPosition,
      ref velocity, smoothTime, maxSpeed: speedScale);
}

最后,您可以将Lerp值应用于SmoothDamp操作:

{{1}}

这只是一个例子,应用lerp方法做你想要缩放的任何属性。