1

Vector3.Lerp()用来实例化一些彼此相距一定距离的预制件。这行得通,但我刚刚开始玩Vector3.Slerp.

这会产生一个很好的弧线,但是我希望弧线发生在 X 轴或 Z 轴上,而不是 Y 轴上。因此,预制件不会在空中形成弧线,而是始终与地面接触。

我一直在阅读,euler local transforms但我不完全确定这是否是正确的。

如果有人可以提供一些建议或意见,我将不胜感激。

4

1 回答 1

3

我做了一些修改(目前还不能声称完全理解推理,或者这是否是唯一的解决方案)但似乎只要开始和结束输入 Slerp 向量的 y 分量为零,物体只会在 xz 平面中移动。下面是一个例子:

Vector3 startpos;
Vector3 endpos;
Vector3 yoffset;
float t;

void Start() 
{
    startpos = new Vector3(-5, 2, 0);
    endpos = new Vector3(3, 2, 2);
    yoffset = new Vector3(0, 2, 0);
}


void Update()
{
    t = (t+Time.deltaTime);
    transform.position = Vector3.Slerp(startpos - yoffset, endpos - yoffset, t/5f);
    transform.position += yoffset;
}
于 2017-08-01T22:50:19.217 回答