- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的逻辑在这里一定很不对劲。本质上,我有一个加载栏,当通过鼠标悬停激活时,它会增加覆盖 UI 面板的左侧位置以提供加载效果。这工作正常。
问题在于当 UI 面板在第二个 while 循环中未激活时,将其向左位置反转回其原始位置 (0,0)。这是我的代码 -
IEnumerator LerpCoroutine()
{
Vector2 xyz;
float timeElapsed = 0;
float lerpDuration = 2;
Vector2 startPos = sliderOverlayRt.offsetMin;
Vector2 x = new Vector2(0, 0);
while (isActivated && timeElapsed < lerpDuration)
{
xyz = Vector2.Lerp(startPos, new Vector2(300, 0), EaseOut(timeElapsed / lerpDuration));
sliderOverlayRt.offsetMin = xyz;
timeElapsed += Time.deltaTime;
yield return null;
}
while (!isActivated && timeElapsed < lerpDuration)
{
xyz = Vector2.Lerp(sliderOverlayRt.offsetMin, new Vector2(0, 0), EaseOut(timeElapsed / lerpDuration));
sliderOverlayRt.offsetMin = xyz;
timeElapsed += Time.deltaTime;
yield return null;
}
}
出于某种原因,sliderOverlayRt.offsetMin 在第二个 while 循环中被设置为零,因此 UI 面板左侧位置重新回到 (0,0)。
最佳答案
这是我所看到的:
在第二个循环中,您从 sliderOverlayRt.offsetMin
开始返回 (0,0)
,但您正在立即更新 sliderOverlayRt.offsetMin
在那之后。因此,在下一次迭代中,您会从更新的 sliderOverlayRt.offsetMin
中获取信息。 ,但由于 lerp 因子基于时间增量,因此数量更多。
此外,您将在 timeElapsed / lerpDuration
处开始第二个 lerp。 .我想您希望 lerp 因子从 0
开始,而不是更大的值。
所以,我想试试这个。
另外,我还没有尝试编译这个。
IEnumerator LerpCoroutine()
{
Vector2 xyz;
float timeElapsed = 0;
float lerpDuration = 2;
float lerpFactor = 0;
Vector2 startPos = sliderOverlayRt.offsetMin;
Vector2 x = new Vector2(0, 0);
var lerpMax = new Vector3(300,0);
while (isActivated && timeElapsed < lerpDuration)
{
xyz = Vector2.Lerp(startPos, lerpMax, EaseOut(lerpFactor / lerpDuration));
sliderOverlayRt.offsetMin = xyz;
timeElapsed += Time.deltaTime;
/// increasing lerpFactor so the bar moves right...
lerpFactor += time.deltaTime;
yield return null;
}
while (!isActivated && lerpFactor >= 0)
{
xyz = Vector2.Lerp(startPos, lerpMax, EaseOut(lerpFactor / lerpDuration));
sliderOverlayRt.offsetMin = xyz;
timeElapsed += Time.deltaTime;
/// decreasing lerpFactor here so the bar moves left
lerpFactor -= Time.deltatime;
yield return null;
}
}
TL;博士
关于c# - Unity - 将 Lerped 位置反转回原始位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62958578/
函数 lerp() 是编程语言中的常用函数: lerp(a, b, t) = a + t * (b - a). 现在对于很多情况,我有一个反函数: fraction(x, a, b) = (x - a
我需要在三个不同的范围之间进行插值, (1,1.3),(.72,1) , (1.4,1.9)->(1,1.05) 和 (2,3)->(1.05,1.1) 其中前两项是 x 值,后两项是 y 值,但函数
有没有一种优雅的方法可以使用整数进行线性插值? (为了平均微 Controller 中的 ADC 测量值,ADC 测量值是 12 位,微 Controller 可以很好地处理 32 位整数)。系数f在
有没有一种优雅的方法可以使用整数进行线性插值? (为了平均微 Controller 中的 ADC 测量值,ADC 测量值是 12 位,微 Controller 可以很好地处理 32 位整数)。系数f在
我正在尝试通过时间值减少浮点数,我正在使用 Unity 并停止时间 Time.timeScale = 0f;,因此无法使用 Time.deltaTime,因此在 while 循环中使用“Time.re
我必须使用 lerp 函数来插入两个图像。帖子 How to perform a linear interpolation between to images推荐此方法 dst[x][y].r = l
当我在我的游戏引擎中运行对象时,我一直遇到与计时器相关的问题。渐变几乎是正确的,当我将渐变应用于移动或旋转的物体时,它很好,除了每隔几秒钟它看起来好像物体在继续平稳移动之前快速闪烁到它之前的位置。 在
所以我决定在 pygame 中为我的矩形角色添加线性插值。几天前我看到了 lerp,我不确定我是否遗漏了什么。 问题是: 例如,当我向右移动时。速度插值以达到所需的最大速度 - (7) 或 (-7 为
我只想通过 lerp 实现 x 轴上的移动对象以获得平滑移动。 这是我需要的图片 我不知道如何对这段代码实现 lerp 以获得这些值之间的平滑移动,它现在可以工作但是它传送玩家并且这不是我想要实现的平
我想 lerp 旋转到 new Quaternion(0,0,0,0);但它似乎根本没有动画到所需的旋转......它只是停在它所在的地方...... 我试的是下面那三个 RectTransform
我想在一系列输入值(例如,A 和 B 之间)之间进行一般插值,并获得一系列输出值(例如,C 和 D 之间)。有时我想限制值(以便 B+10000 仍然输出 D),有时我不想。我该怎么做? 例如,给定输
我有一个带有 2d 对撞机的立方体游戏对象,当有人击中相机时应该向上 10 个单位,但很顺利,相机转到正确的位置但没有阻尼。 public Transform target; public float
目前这是我的脚本,用于将玩家移动到场景周围。我怎样才能让它顺利移动? void FixedUpdate() { bool running = Input.GetKey(KeyCode.Left
在学习了 std::lerp 之后,我尝试将它与强类型一起使用,但它失败了,因为它只适用于内置类型...... #include #include struct MyFloat{ float
我的逻辑在这里一定很不对劲。本质上,我有一个加载栏,当通过鼠标悬停激活时,它会增加覆盖 UI 面板的左侧位置以提供加载效果。这工作正常。 问题在于当 UI 面板在第二个 while 循环中未激活时,将
我想来回更改颜色的 alpha 值(透明度): private void Awake() { material = gameObject.GetComponent().material;
我正在使用 LibGDX 并尝试在两个 Vector3 之间穿插……但是,当我这样做时,它不是线性的,而是以指数方式缓和它。我不想要这个,我想要它是纯线性的! 这样我的模型就可以遵循一组 Vector
我正在尝试在协程中使用两个不同的 lerp 来扩大然后缩小一系列游戏对象。尽管这两个 while 循环在功能上是相同的,但对象会增长但不会缩小,而是保持增加的大小。 我已将初始和最终尺寸替换为硬编码值
我想知道如何根据 2 个对象之间的距离制作平滑的颜色插值。颜色应该从绿色到红色到绿色再到红色......远立方体 = 红色,近立方体 = 绿色。 我已经让一切正常,但唯一认为无效的是颜色不平滑。这就是
我是一个刚刚接触 pyCUDA 的休闲 Python 爱好者。我试图弄清楚如何使用 pyCUDA 实现线性插值(lerp)。 CUDA CG函数为:http://http.developer.nvid
我是一名优秀的程序员,十分优秀!