计算精灵根据需要行进的距离和行进速度改变大小的速度

Posted

技术标签:

【中文标题】计算精灵根据需要行进的距离和行进速度改变大小的速度【英文标题】:Calculating the speed a sprite changes size based on the distance it needs to travel and speed it is travelling 【发布时间】:2021-11-18 01:12:59 【问题描述】:

我正在做一些精灵缩放,并且有一个精灵从 x+y 轴上的 0.2 比例开始,它在起点和终点之间以恒定速度 (10) 行进,随着行进的比例增加。

我需要它在该距离上均匀缩放,以便当它到达终点时,它处于最终比例 (0.2 - 1)。

现在,因为距离会根据产生的位置而变化,因此缩放大小所需的时间也必须发生变化,以便它可以在整个距离上均匀缩放,我需要的是计算出基于“缩放速度”的计算关于它正在移动的距离和项目移动的速度。

我用 Vector3.Distance 得到两点之间的距离

distance = Vector2.Distance(transform.position, centerScreen);

这会随着时间的推移缩放对象

if (transform.localScale.x < 1 && transform.localScale.y < 1)
   
    transform.localScale = new Vector3(transform.localScale.x + scaleSpeed * Time.deltaTime, transform.localScale.y + scaleSpeed * Time.deltaTime, 1);
   

物体以 10 的速度移动

我的问题是,如何根据物体行进的距离和速度来计算缩放速度?

【问题讨论】:

那么你的问题是什么,你已经尝试了什么?你的代码在哪里?你有一些错误?这应该很容易使用 Vector3.Distance docs.unity3d.com/ScriptReference/Vector3.Distance.html 【参考方案1】:

在 Unity 中,有一个名为 InverseLerp 的函数,它根据值 v 在值 a 和 b 之间的距离创建一个从 0 到 1 的点。它与 Lerp 函数相反。 (https://docs.unity3d.com/ScriptReference/Mathf.InverseLerp.html)。

以下是适合您情况的示例代码:float sizeVal = Mathf.InverseLerp(0, yourSetDistance, distance) * 0.8f + 0.2f;

这会将逆 lerp 的范围更改为 0.2 到 1 之间。在大小向量中使用 sizeVal。如果这不是您想要的,请更详细地解释或重申您的问题。

【讨论】:

以上是关于计算精灵根据需要行进的距离和行进速度改变大小的速度的主要内容,如果未能解决你的问题,请参考以下文章

距离计算器

根据速度和网格计算减速度

使用光流的机器人行进距离

Mapbox:用户速度和距离

确定行进路径 mkmapview swift 上的距离

如何使用陀螺仪和加速度计找到行进的距离?