Mathf类
求绝对值:ABS() 、求最值MAX ()MIN()、开平方: Sqrt()
四舍五入:Round()正常、Ceil()取出来的比给的大、Floor()取出来的比给的小、
三角函数: Sin(),Cos(),Tan()、幂次方与指数:Log()、Log10()Pow() 、
Lerp()、SmoothDamp ()、MoveTowards()、PingPong ()等
示例:
print(Mathf.Infinity); //正无穷大
print(Mathf.NegativeInfinity); //负无穷大
print("1角度等于多少弧度" + Mathf.Deg2Rad);
//30度对应的弧度值就是30*Mathf.Deg2Rad
print("sin30度怎么写" + Mathf.Sin(Mathf.Deg2Rad * 30));
print("cos30度怎么写" + Mathf.Cos(Mathf.Deg2Rad * 60));
向量
向量+向量就是四边形的对角线,
向量1-向量2=指向向量1的向量,点+向量得到点,点+点=没有
构建一个三维向量:
两个参数向量的构造方法:
Vector3 v1 = new Vector(1,2,)等同于Vector3 v1 = new Vector(1,2,0),z默认是0
三个参数的构造方法:
Vector3 v1 = new Vector(1,2,3)
无参数的构造方法:
Vector3 v1 = new Vector()
V1.x = 1 v1.y = 1,这样赋值
求向量的长度:
float v2Value = Vector3.Magnitude(v2); (向量求模)
向量的标准化:原向量/向量的模长
两个向量的点乘: Dot() 结果是一个浮点数float类型
两个向量长度相乘,再乘以两个向量夹角的余弦值。
float v1 = Vector3.Dot(transform.forward,(Cube.position - transform.position));
得出的数如果是正数,证明物体在Cube的前方,反之后方,(z轴
注:判断敌人是在面前还是身后,和你的角度是什么,一个大角一个小角
v2是把点乘求出的值标准化(normalized) ,出的值是0-1之间
float v2 = Vector3.Dot(transform.forward,
(Cube.position-transform.position).normalied);
然后弧度转角度 float cosAngle = Mathf.Acos(v2) * Mathf.Rad2Deg;更精确的方法
两个向量间的夹角: Angle( ) 夹角是float类型
Vector3.Angle(transform.forward,(Cube.position - transform.position));
叉乘Cross()
求两个向量的叉乘: Cross( )
结果是一个Vector3,两个向量长度相乘,再乘以两个向量夹角的正弦值。
Vector3 vv = Vector3.Cross(transform.forward,Cube. position-transform. position);
求得的值-正值:顺时针转动 负值:逆时针转动
注:判断敌人怎么转过来面对你
运算过程:
V1( 10,20,3 ),V2( 20,2, 10 )
第1步:求V1和v2向量的长度,v1Length, v2Length
第2步:两个向量长度相乘,存到mulLength中
第3步:求两个向量的夹角值,存到angleValue中
第4步:夹角求了之后,再求夹角的正弦值sinValue中
第5步:第2步的结果和第4步的结果相乘
Lerp():获取一个指定范围的线性值
Vector.Lerp(a,b,t) 返回一个新向量 实现平缓移动或者相机跟随
t=0 a就是返回的新向量 ,t=1 b就是返回的新向量,t=0.5时,取他俩中间,还可以=0.1234566
简单的朝向移动: