我正在使用Vector3.Lerp()
来实例化彼此相距一定距离的预制件。这很有效,但我刚开始玩Vector3.Slerp
。
这会产生一个漂亮的弧线,但是我希望弧线发生在X轴或Z轴上,而不是Y.因此,预制件始终保持与地面接触,而不是向空中旋转。
我一直在阅读euler local transforms
,但我不完全确定这是否正确。
如果有人可以提供一些建议或意见,我会非常感激。
答案 0 :(得分:2)
我做了一点修补(并且不能声称完全理解现在的推理,或者这是否是唯一的解决方案)但似乎只要开始和结束输入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;
}