我在(0,2,0)上有一个立方体,我希望它在y轴上从2向下移动到1然后再到3再回到1再回到3等等......
有人可以解释一下,使用Mathf.PingPong()
时作为参数传递的内容吗?
我有
public virtual void PingPongCollectable(Transform transform, float speed)
{
Vector3 pos = transform.position; // current position
pos.y = Mathf.PingPong( ? , ? ); // missing parameters, calculate new position on y
transform.position = pos; // new position
}
那么我必须在哪里传递速度和坐标A(上方)和B(下方)?
立方体应该在循环中平滑地上下滑动。
谢谢!
答案 0 :(得分:0)
Mathf.PingPong 方法的签名如下:
public static float PingPong(float t, float length);
PingPongs值t,因此它永远不会大于length并且永远不会小于0 返回的值将在0和长度之间来回移动。
如果您想要平滑过渡,则第一个参数应为Time.time。
第二个参数是最大值。然后,该方法为您提供0到该最大值之间的位置。
然后,您可以为乒乓球方法设置底层和长度。
以下是使用您提供的代码的示例:
public virtual void PingPongCollectable(Transform transform, float speed)
{
Vector3 pos = transform.position;
float length = 1.0f; // Desired length of the ping-pong
float bottomFloor = 1.5f; // The low position of the ping-pong
pos.y = Mathf.PingPong(Time.time, length) + bottomFloor;
transform.position = pos; // new position
}
来源:https://docs.unity3d.com/ScriptReference/Mathf.PingPong.html