内容纲要

Mathf

  • Mathf.PI; Mathf.Sin(1);

  • 常量:

  • Deg2Rad : 0.0174533f; //角度转弧度的常量值

  • Rad2Deg : 57.2958f; //弧度转角度的常量值

  • Epsilon : 0.000001 //浮点数中最小的数 // unity Mathf中提供了- Mathf.Approximately(float a, float b) 用来比较两个浮点数是否大约相近, 里面就有Epsilon

  • Infinity : 1.0f / 0.0f; //表示正无穷大

  • PI

  • Static Methods

  • Abs 绝对值

  • 三角函数:Acos 返回cos f 对应的弧度值 //值转弧度

  • sin cos tan

  • asin acos atan

  • 取整: ceill / Floor 向上取整 / 向上取整

  • round 四舍五入

  • 夹持: clamp clamp01 两数之间最接近目标值的数

  • 幂函数: pow 什么数的多少次方

  • sqrt 开方 //比较耗时,尽量避免

  • ClosestPowerOfTwo 返回最接近value值得2的某次幂的值,当value小于0时返回0

  • 对数函数: log 自然对数

  • log10 以10为底的对数

  • 指数函数 : exp

    • 极值: min / max
  • 取符号 : sign

  • 插值函数 :lerp / InverseLerp / LerpAngle /LerpUnclamped

  • MoveTowards / MoveTowardsAngle

  • pingPong / Repeat

  • smoothDamp / SmoothFampAngle /smoothStep

  • 噪点函数 : PerlinNoise

  • 方法:

  • Clamp:夹持:

  • public static float Clamp(float value, float min, float max);

  • 该函数的返回值为min到max之间最接近value的值

  • Clamp01(),的夹持范围是[0,1]

  • ClosestPowerOfTwo:

  • public static int ClosestPowerOfTwo(int value);

  • 返回最接近value值得2的某次幂的值,当value小于0时返回0

  • 如 Mathf.ClosesPowerOfTwo(11); //返回值为8

  • Mathf.ClosesPowerOfTwo(12); //返回值为16

  • //一般底层数据如贴图等为性能考虑,可能会用

  • DeltaAngle方法,最小增量角度

  • public static float DeltaAngle(float current, float target);

  • current为当前角度,target为目标角度,该函数返回从current到target之间的最小的角度增量,如果为顺时针为正,逆时针为负

  • InverseLerp 计算比例值

  • public static float InverseLerp(float from, float to, float value);

  • form为起始值,to为终点值,value为参考值,当value在from和to范围内时,函数返回 (value – form)/(to – form)的值,为一个 0~1的数;

  • 如果value不在from到to范围内,该函数返回0或1,小于from返回0,大于to返回1;

  • Lerp 线性差值

  • public static float Lerp(float from, float to, float t);

  • from起始值,to为结束值,t为差值系数,(0到1之间)

  • 返回(to – from) * t;

  • LerpAngle 角度差值

  • public static float LerpAngle(float a, float b, float t);

  • a为起始角度,b为结束角度,t为插值系数

  • LerpUnclamped lerp,允许超出范围

  • public static float LerpUnclamped(float a, float b, float t)

  • 当a = 0; b =10; t =2 ;时,返回值为20

  • 当a = 3; b = 10; t = 2;时,返回值为17

  • MoveToWards 选择性差值

  • public static float MoveToWards(float current, float target, float maxDelta); //maxDelta为负值表示远离目标target

  • current为当前值,target为目标值,maxDelta为最大偏移量

  • 返回从current到target移动maxDelta个单位后的值,若超出target,则为target,若不超出,且current target 返回currnt – maxDelta

  • MoveTowardsAngle方法 角度选择性插值

  • public static float MoveTowardsAngle(flat current, float target, float maxDelta); //所有参数和返回值都为角度值,maxDelta只能为正,如果想让其远离target,可以把返回值加上180度

  • pingpong 往返运动

  • public static float PingPong(float t, float length); //在0到length之间做往返运动

  • 该函数返回t值相对于length的一个pingpong运动,如:

        Vector3 positon = this.transform.position;
        positon.x = Mathf.PingPong(Time.time, 1);   //当Time.time在0到1直接时,返回Time.time(一个0到1的数);   当Time.time在1到2之间时,返回2 - Time,time(一个1到0的数);  当TIme.time在2到3之间时返回Time.time - 2(一个0到1的数); 如此循环
        this.transform.position = positon;
  • Repeat 重复运动

  • public static float Repeat(float t, float length); //在0到length之间做重复运动,和pingpong的区别就在于该运动不往返,

        Vector3 positon = this.transform.position;
        positon.x = Mathf.Repeat(Time.time, 1);   //当Time.time在0到1直接时,返回Time.time(一个0到1的数);   当Time.time在1到2之间时,返回Time,time - 1(一个0到1的数);  如此循环
        this.transform.position = positon;
  • PerlinNoise 噪点函数 // 佩林噪点 生成2D噪点图像 //地形的高低起伏,金属的盔甲 //Perlin噪声是在2D平面上生成的浮点值的伪随机模式(尽管该技术确实推广到三维或更多维,但这在Unity中没有实现)。噪声在每个点上不包含完全随机的值,而是由“波”组成,其值在整个模式中逐渐增大和减小。噪声可以用作纹理效果的基础,也可以用于动画,生成地形高度图和许多其他内容。 //一种渐变的随机数

  • public static float PerlinNoise(float x, float y);

  • X 样本点的X坐标。

  • y 样本点的Y坐标。

  • 返回值是一个0到1之间的数 (返回值可能稍微超过1.0) //如果0.0到1.0范围对您很重要,则可能需要钳制返回值

  • 只使用一维来生成PerlinNoise的实例: //实现一个小球的上下随机跳动(随机波形,连续的波形)

    void Update()
    {
        float height = heightScale * Mathf.PerlinNoise(Time.time * xScale, 0.0f);
        Vector3 pos = transform.position;
        pos.y = height;
        transform.position = pos;
    }
  • //二维的用法可以用于生成动画,地形,和纹理,详细参考unity官方文档

1 对 “API”的想法;

  1. Pingback: viagra

发表评论