色彩随机线性变换

有时候做一些颜色随机,需要变化,但是跨度太大不好看,最好有一个过度,就是改变一个色值,达成一个循环,这样变化看起来比较柔和.

//获取一个随机颜色位置
    public static float GetLineColorSeed(float colorMin = 0f, float colorMax = 1f)
    {
        float range = colorMax - colorMin;
        float randomrange = range * 6f;

        return UnityEngine.Random.Range(0, randomrange);
    }
    //循环变色,colorSeed是颜色的随机基位置,step是每个周期的位置
    public static Color GetLineColor(float colorSeed, float alpha, float step ,float colorMin = 0f, float colorMax = 1f)
    {

        float range = colorMax - colorMin;
        float randomrange = range * 6f;

        float nowC = (colorSeed + step) % randomrange;

        Color color;
        color.a = alpha;
        if (nowC < range)
        {   
            //R 变大
            color.r = nowC % range;
            color.g = colorMin;
            color.b = colorMax;
        }
        else if (nowC < range * 2)
        {
            //B 变小
            color.r = colorMax;
            color.g = colorMin;
            color.b = colorMax - nowC % range;
        }
        else if (nowC < range * 3)
        {
            //G 变大
            color.r = colorMax;
            color.g = colorMin + nowC % range;
            color.b = colorMin;
        }
        else if (nowC < range * 4)
        {
            //R 变小
            color.r = colorMax - nowC % range;
            color.g = colorMax;
            color.b = colorMin;
        }
        else if (nowC < range * 5)
        {
            //B 变大
            color.r = colorMin;
            color.g = colorMax;
            color.b = colorMin + nowC % range; ;
        }
        else
        {
            //G 变小
            color.r = colorMin;
            color.g = colorMax - nowC % range;
            color.b = colorMax;
        }

        //Debug.Log( color.ToString());

        return color;
    }

调用

//先随机一个颜色.
float colorSeed = Fun.GetLineColorSeed(0f, 0.7f);

colorStep每次增加,来改变颜色,这样过度比较平滑.
Color corFrom = Fun.GetLineColor(colorSeed, 1f, colorStep, 0f, 0.7f);
colorStep += 0.01f;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Thinbug

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值