Ceil向上取值
| 1 2 3 4 5 |         //向上取值,向大取值         Debug.Log(Mathf.Ceil(0.1f)); //1         Debug.Log(Mathf.Ceil(0.9f));//1         Debug.Log(Mathf.Ceil(-0.1f));//0         Debug.Log(Mathf.Ceil(-0.9f));//0 | 
Floor向下取值
| 1 2 3 4 5 |         //向下取值,向小取值         Debug.Log(Mathf.Floor(0.1f)); //0         Debug.Log(Mathf.Floor(0.9f));//0         Debug.Log(Mathf.Floor(-0.1f));//-1         Debug.Log(Mathf.Floor(-0.9f));//-1 | 
Round四舍五入
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |         //四舍五入         Debug.Log(Mathf.Round(0.1f)); //0         Debug.Log(Mathf.Round(0.9f));//1         Debug.Log(Mathf.Round(-0.1f));//0         Debug.Log(Mathf.Round(-0.9f));//-1         //如果 遇到 0.5 时候会不一样, 结果看前一位         // 正数  偶数 -->  -0.5         // 负数  偶数 -->  +0.5         // 正数  奇数 -->  +0.5         // 负数  奇数 -->  -0.5         Debug.Log(Mathf.Round(0.5f)); //1         Debug.Log(Mathf.Round(1.5f));//2         Debug.Log(Mathf.Round(-0.5f));//0         Debug.Log(Mathf.Round(-1.5f));//-2 | 
Camp限制
| 1 2 3 4 5 6 7 8 9 10 11 |         //Camp(value, min ,max)         //限制:限制value的值在min 和 max之间,如果value小于min,返回min。         //如果value大于max,返回max,返回max,否则返回value         Debug.Log(Mathf.Clamp(12, 10, 20));//12         Debug.Log(Mathf.Clamp(5, 10, 20));//10         Debug.Log(Mathf.Clamp(25, 10, 20));//20         //限制 0-1 之间,如果小于0返回0 ,如果大于1返回1,否则返回value         Debug.Log(Mathf.Clamp01(0.1f));//0.1         Debug.Log(Mathf.Clamp01(-0.1f));//0         Debug.Log(Mathf.Clamp01(2f));//1 | 
Lerp插值
| 1 2 3 4 5 6 7 8 9 10 11 12 13 |         //插值         //第三个参数t :表示一个百分数,0-1,如果 t= 0.5f,那么返回值就从50%开始         //1.第三个参数如果是固定值,则返回值是固定值根据参数大小而改变         //2.第三个参数必须是0-1之间如果 <= 0 ,返回第一参数值,如果参数 >= 1 返回第2个参数         //Mathf.Lerp(a, b, c)         //原理 返回值 =  (b - a)*c + a ;         Debug.Log(Mathf.Lerp(1, 100, Time.time));         Debug.Log(Mathf.Lerp(1, 100, 0.5f));         //物体匀速运动         target.transform.position = new Vector3(Mathf.Lerp(0, 15, Time.time), 0, 0);         //Mathf.LerpAngle(10, 100, Time.time);         target.transform.eulerAngles = new Vector3(0, Mathf.LerpAngle(10, 100, Time.time), 0); | 
InverseLerp反插值
| 1 2 |         //反插值         Debug.Log(Mathf.InverseLerp(10, 100, Time.time)); | 
SmoothDamp阻尼运动
| 1 2 3 4 5 6 7 8 9 10 |         //阻尼运动         float target = 5f;         float curretVeloctity = 0f; //当前速度         float smothTime = 1f;//平滑系数 = 1s         float mManSpeed = Mathf.Infinity; //x轴的最大速度         this.transform.position = new Vector3(             Mathf.SmoothDamp(transform.position.x, target, ref curretVeloctity, smothTime, mManSpeed),             transform.position.y,             transform.position.z             ); | 
Repeat
| 1 2 3 |         //返回值 0-3 不停的重复         float f = Mathf.Repeat(Time.time, 3);         transform.localScale = Vector3.one * f; | 
PingPong
| 1 2 3 |         //返回值 0 - 3- 0 - 3 往返的返回值         float f2 = Mathf.PingPong(Time.time, 3);         transform.localScale = Vector3.one * f2; | 
颜色曲线
视觉效果上 GammaSpace 图显示效果要好,LinearSpace 要比 GammmaSpace 更容易计算。因此, 往往处理颜色方面信息时, 需要用所讲的2个转换函数把Gamma Space ->Linear Space,然后对Linear Space进行计算后,再转换为GammaSpace
| 1 2 3 4 |         //颜色的改变是一个曲线的增长         Mathf.GammaToLinearSpace();         //颜色的增长是线性的增长         Mathf.LinearToGammaSpace(); | 
PerlinNoise噪声图
返回的随机数之间不会有太大的变化,而是有一定的过渡效果
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |     public Material mat;     public Vector3 color;     void Start()     {         mat = gameObject.GetComponent<MeshRenderer>().material;         color = new Vector3(             Random.Range(0f, 1f),              Random.Range(0f, 1f),               Random.Range(0f, 1f));     }     void Update()     {         float cx = Mathf.PerlinNoise(Time.time, color.x);         float cy = Mathf.PerlinNoise(Time.time, color.y);         float cz = Mathf.PerlinNoise(Time.time, color.z);         mat.color = new Color(cx, cy, cz);     } | 
- 本文固定链接: http://www.u3d8.com/?p=2177
- 转载请注明: 网虫虫 在 u3d8.com 发表过





