我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;
}