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

柏林噪声

使用:
噪声结果 = 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;
        }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值