unity中 写一个过三点的二次贝塞尔曲线 详细代码
时间: 2024-03-29 14:34:41 浏览: 15
在Unity中,可以使用贝塞尔曲线来创建平滑的曲线路径。下面是一个过三点的二次贝塞尔曲线的示例代码:
```csharp
using UnityEngine;
public class QuadraticBezierCurve : MonoBehaviour
{
// 控制点1
public Vector3 controlPoint1;
// 控制点2
public Vector3 controlPoint2;
// 结束点
public Vector3 endPoint;
// 曲线上的点数
public int numberOfPoints;
// 曲线上的点
private Vector3[] points;
// 绘制曲线
private void OnDrawGizmos()
{
// 初始化曲线上的点数组
points = new Vector3[numberOfPoints];
// 计算曲线上的点
for (int i = 0; i < numberOfPoints; i++)
{
float t = i / (float)(numberOfPoints - 1);
points[i] = CalculatePointOnCurve(t);
}
// 绘制曲线
Gizmos.color = Color.white;
for (int i = 0; i < numberOfPoints - 1; i++)
{
Gizmos.DrawLine(points[i], points[i + 1]);
}
}
// 计算曲线上的点
private Vector3 CalculatePointOnCurve(float t)
{
return Mathf.Pow(1 - t, 2) * controlPoint1 +
2 * (1 - t) * t * controlPoint2 +
Mathf.Pow(t, 2) * endPoint;
}
}
```
你可以将该脚本挂载到一个空物体上,然后在Inspector面板中设置控制点和结束点的位置,以及曲线上的点数。然后,该脚本会自动计算并绘制出二次贝塞尔曲线。