柏林噪声
使用:
噪声结果 = Mathf.PerlinNoise(x, y);
unity的柏林是个二维柏林采图,可以想象为一个二维矩阵
每次使用前随机Y,实时递进X,得到不一样的结果
transform.position = new Vector3(Mathf.PerlinNoise(Time.time, 0), Time.time, 0);
问题:
不知道是unity随机种子有问题,还是使用的不对,偶尔会出现一段直线运动,不符合预想。
贝塞尔曲线
一个平滑的曲线,根据控制点分个数 称为不同阶的贝塞尔曲线
使用说明网上很多..
问题:
计算路程比较困难,二维的还能算算,三维尝试微积分思想
private float _GetTotalLength()
{
float pointCount = 10f; //生成10个点 粗略计算距离
float crossValue = 1f / pointCount;
var pointCountInt = 10;
float totalDistance = 1;
var lastPoint = Vector3.zero;
for (int i = 1; i <= pointCountInt; i++)
{
var curPoint = this._Bezier(i * crossValue);
totalDistance = totalDistance + Vector3.Distance(lastPoint, curPoint);
lastPoint = curPoint;
}
return totalDistance;
}