c# - Unity 的 Mathf.PingPong 实际上是做什么的?

标签 c# unity3d

Unity 文档 Mathf.PingPong说:

PingPongs the value t, so that it is never larger than length and never smaller than 0.



我知道它在 0 和 length 之间旋转一个值,我不明白的是值是多少 t它与 PingPong 的工作方式有什么关系?

如果我设置 t对于任何常数,我总能得到那个值
void Update()
{
// always prints: 1
    print(Mathf.PingPong(1f, 1f));

// always prints 0
    print(Mathf.PingPong(0f, 1f));
}

每次我看到示例中使用 PingPong 时,它都有 Time.time用于 t值(或一些基于 Time.time 的数学)。为什么?

我见过的唯一解释来自这个问题:c# Unity Mathf.PingPong not working这意味着 t 的值必须总是在变化,但同样不清楚为什么或发生了什么。

那么,什么是Mathf.PingPong实际做 t/值是多少 t实际上是为了,以及如何正确使用该功能?

最佳答案

所以Mathf.PingPong()使用函数调用 Mathf.Repeat()
这些可能用作补间/缓动辅助函数

所以Mathf.Repeat(float t, float length)将创建这样的图表
enter image description here
哪里length是每条线段的长度,t是函数的 X 值(返回值是图形上对应的 Y 位置)

什么 Mathf.PingPong(float t, float length)看起来更像这样
enter image description here
又在哪里length描述每个三角形的高度和 t给出 X 位置

一个常见的用例是我们希望一些值随着这个图而改变,就像沿着它稳步增加的 X 值走一样,并在每一步取 Y 的值。
最简单的方法是通过 Time.time在作为 t参数,它将获得该函数在相应 X 位置的值。

float Y = Mathf.PingPong(Time.time,Max_Y_Value);

关于c# - Unity 的 Mathf.PingPong 实际上是做什么的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61306895/

相关文章:

c# - 从 C# 调用 WebBrowser 控件中的 JavaScript

javascript - 从 C# 中的另一个应用程序连接到 SignalR 自主机集线器

c# - 删除方法不删除

c# - 如何使用 Autofac 使用方法连接事件?

c# - 使用 unity3d 获取设备的方向

c# - 索引超出范围。必须是非负数且小于集合的大小

android - Unity facebook sdk 'Didn' t find class "com.facebook.FacebookContentProvider"'对此还有什么建议吗?

c# - 在非触摸支持的计算机上统一编程触摸

c# - ActiveX 初始化 : AxHost. 状态对象

c# - 保险问题跳过问题 - Unity C#