Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用矢量控制弧轴3.Slerp_C#_Unity3d_Lerp - Fatal编程技术网

C# 用矢量控制弧轴3.Slerp

C# 用矢量控制弧轴3.Slerp,c#,unity3d,lerp,C#,Unity3d,Lerp,我正在使用Vector3.Lerp()实例化一些彼此相距一定距离的预制件。这是可行的,但我刚刚开始使用Vector3.Slerp 这创造了一个很好的弧线,但是我希望弧线发生在X轴或Z轴上,而不是Y轴上。因此,预制件不会在空中形成弧线,而是始终与地面保持接触 我一直在阅读《euler局部变换》(euler local transforms),但我不完全确定这是否正确 如果有人能提供一些建议或意见,我将不胜感激 我做了一些修改(目前还不能完全理解推理,或者这是否是唯一的解决方案),但似乎只要开始和结

我正在使用
Vector3.Lerp()
实例化一些彼此相距一定距离的预制件。这是可行的,但我刚刚开始使用
Vector3.Slerp

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

我一直在阅读《euler局部变换》(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;
}

我会看一看,谢谢。你知道吗,我也不完全确定这是怎么回事,但它确实起作用了。谢谢我希望Slerp只是有一个过载的地方来控制它,但这似乎做的工作。我想这是因为slerp不是把开始和结束矢量3当作点来处理,而是把它们当作矢量来处理,并对它们的角度和大小进行插值。如果向量的y分量为零,那么它们之间的任何角度插值将始终在xz平面上。如果不是,则不保证,即使开始和结束的y分量相同。