使用Vector3.Slerp控制弧轴

时间:2017-08-01 20:47:04

标签: c# unity3d lerp

我正在使用Vector3.Lerp()来实例化彼此相距一定距离的预制件。这很有效,但我刚开始玩Vector3.Slerp

这会产生一个漂亮的弧线,但是我希望弧线发生在X轴或Z轴上,而不是Y.因此,预制件始终保持与地面接触,而不是向空中旋转。

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

如果有人可以提供一些建议或意见,我会非常感激。

1 个答案:

答案 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;
}