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 发表过