Pip*_*pup 4 c# unity-game-engine
Mathf.PingPong的 Unity 文档说:
PingPongs 值
t,因此它永远不会大于length也永远不会小于0。
我知道它在 0 和 之间旋转一个值length,我不明白的是这个值t在做什么以及它与 PingPong 的工作方式有什么关系?
如果我设置t为任何常量,我总是会得到那个值
void Update()
{
// always prints: 1
print(Mathf.PingPong(1f, 1f));
// always prints 0
print(Mathf.PingPong(0f, 1f));
}
Run Code Online (Sandbox Code Playgroud)
每次我看到在示例中Time.time使用PingPong 时,它都用于t值(或一些基于 的数学Time.time)。为什么?
我看到的唯一解释来自这个问题:c# Unity Mathf.PingPong not working这意味着 的值t必须始终在变化,但同样不清楚为什么或发生了什么。
那么,Mathf.PingPong实际上在做什么t/t实际值是什么,以及如何正确使用该功能?
所以Mathf.PingPong()使用一个函数调用Mathf.Repeat()
这些可能用作补间/缓动辅助函数
所以Mathf.Repeat(float t, float length)会创建一个这样的图表

其中length是每条线段的长度,t是函数的 X 值(返回值是图形上对应的 Y 位置)
什么Mathf.PingPong(float t, float length)看起来更像这样

再次 wherelength描述每个三角形的高度并t给出 X 位置
一个常见的用例是我们希望一些值随着这个图而改变,就像沿着它稳步增加的 X 值走一样,并在每一步取 Y 的值。最简单的方法是Time.time作为t参数传入,这样会得到这个函数在对应X位置的值。
float Y = Mathf.PingPong(Time.time,Max_Y_Value);
Run Code Online (Sandbox Code Playgroud)