用 Vector3.Slerp 控制圆弧轴

Controlling arc axis with Vector3.Slerp

我正在使用 Vector3.Lerp() 实例化一些相互之间设定距离的预制件。这行得通,但我刚开始玩 Vector3.Slerp.

这会创建一个漂亮的弧线,但是我希望弧线发生在 X 轴或 Z 轴上,而不是 Y 轴上。因此,预制件不会在空中形成弧形,而是保持与地面接触所有时间。

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

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

我做了一些修改(并且不能声称到目前为止完全理解推理,或者这是否是唯一的解决方案)但似乎只要开始和结束输入 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;
}