【问题标题】: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 的速度移动

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

【问题讨论】:

标签: c# unity3d math game-development


【解决方案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。如果这不是您想要的,请更详细地解释或重申您的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-20
    • 1970-01-01
    • 1970-01-01
    • 2013-07-08
    相关资源
    最近更新 更多