// Class CarsoulManager
//贝塞尔曲线顶点
[SerializeField]
private Vector3 [] BezierPos = new Vector3 []
{
new Vector3[ -160, 0, 80 ],
new Vector3[ 0, 0, 0 ],
new Vector3[ 160, 0, 80 ]
};
// 支持四阶、三阶、二阶贝塞尔曲线
public Vector3 GetBezierPosition( float lerp )
{
int count = BezierPos.Length;
if (count >= 4)
{
Vector3 p1 = Vector3.Lerp(BezierPos[0], BezierPos[1], lerp);
Vector3 p2 = Vector3.Lerp(BezierPos[1], BezierPos[2], lerp);
Vector3 p3 = Vector3.Lerp(BezierPos[2], BezierPos[3], lerp);
Vector3 p4 = Vector3.Lerp(p1, p2, lerp);
Vector3 p5 = Vector3.Lerp(p2, p3, lerp);
return Vector3.Lerp(p4, p5, lerp);
}
else if (count == 3)
{
Vector3 p1 = Vector3.Lerp(BezierPos[0], BezierPos[1], lerp);
Vector3 p2 = Vector3.Lerp(BezierPos[1], BezierPos[2], lerp);
return Vector3.Lerp(p1, p2, lerp);
}
else if (count == 2)
{
return Vector3.Lerp(BezierPos[0], BezierPos[1], lerp);
}
else if (count == 1)
return BezierPos[0];
else
return Vector3.zero;
}
unity贝塞尔曲线
最新推荐文章于 2023-08-25 18:14:44 发布