【unity】常用算法-柏林噪声、贝赛尔曲线

柏林噪声

使用:
噪声结果 = Mathf.PerlinNoise(x, y);
unity的柏林是个二维柏林采图,可以想象为一个二维矩阵
每次使用前随机Y,实时递进X,得到不一样的结果

transform.position = new Vector3(Mathf.PerlinNoise(Time.time, 0), Time.time, 0);

问题:
不知道是unity随机种子有问题,还是使用的不对,偶尔会出现一段直线运动,不符合预想。

【unity】常用算法-柏林噪声、贝赛尔曲线_第1张图片

 

贝塞尔曲线

一个平滑的曲线,根据控制点分个数 称为不同阶的贝塞尔曲线

使用说明网上很多..

问题:
计算路程比较困难,二维的还能算算,三维尝试微积分思想
 

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

你可能感兴趣的:(Unity,unity,游戏引擎)