c# - 如何将 lerp 转换为三次缓动?

标签 c# unity-game-engine easing lerp

我需要将以下代码从使用 lerp 转换为使用立方缓动,但我不知道如何处理函数中立方缓动返回的浮点值,因为我使用的是 Vector3 而不是 float 。有人可以给我提示吗?

    if (Vector3.Distance(activeTween.Target.position, activeTween.EndPos) > 0.1f)
        {
            float fraction = (Time.time - activeTween.StartTime) / activeTween.Duration;
            activeTween.Target.position = Vector3.Lerp(activeTween.StartPos, activeTween.EndPos, fraction);
        }

最佳答案

您可能应该使用它来代替 Vector3.Lerp 中的分数

Lerp 只是向量的线性插值,即 0.3 表示来自一个向量的 30%,来自另一个向量的 70%。如果我们想要非线性插值,我们可以对输入值应用一些任意函数。例如,0.3 可以转换为 0.027,然后可以用作 Lerp 的输入以获得 2.7%/97.3% 混合。

关于c# - 如何将 lerp 转换为三次缓动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69218519/

相关文章:

c# - ReactiveUI 和 Caliburn Micro 在一起?

c# - Xelement.XPathSelectElement

.net - 如何使用托管代理在 VSTS 中构建针对 .NET 3.5 的 .csproj?

c# - Unity Raycast() 和 DrawRay() 使用相同的输入创建不同的光线

jQuery div 下拉点击事件

c# - 在 C# 中从 HTML 表中检索数据

c# - 使 Contract.Assert 抛出异常而不是显示对话框

linux - Unity 3d 安装 Linux/Ubuntu 标准资源

javascript - 如何使用 .show() 从顶部而不是从左侧创建隐藏的 div 缓动?

jquery - 线性宽松放缓