如何在降低比例的同时SmoothDamp?例如,将范围从10 {1}减少到transform.position
?
以下是代码:
targetPosition
答案 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方法做你想要缩放的任何属性。