Unity 文档 Mathf.PingPong说:
PingPongs the value
t
, so that it is never larger thanlength
and never smaller than0
.
我知道它在 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)
将创建这样的图表
哪里length
是每条线段的长度,t
是函数的 X 值(返回值是图形上对应的 Y 位置)
什么 Mathf.PingPong(float t, float length)
看起来更像这样
又在哪里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/