目录
Mathf
其实这种写法也是向下取整 ceil floor round'
4的二次方
可能需要手动设置它到目标值,因为它不会插值到目标值。 lerp返回一个浮点数,不是方法
练习题
b物体现在的位置,开始位置
因为直接lerp是不会直接到达位置,所以会一直插值。而匀速插值是能达到位置,所以会停止。
思路是,一直从开始位置的初始数据计算,因为开始位置本身一直在变动,但它的副本不会,让插值系数每次都增加固定值,就等于是在匀速插值。
三角函数
Mathf.Deg2Rad就是0.01745这个数
就是sin30°的值
反过来通过值得到弧度。输出角度
坐标系
向量
基础api
模长就只有大小,没有方向
如果c是一个点,那模长就是相对于原点
计算两点间的距离和得到ab的模结果是一样的
归一化则没有大小,只有方向
这就是单位向量
向量的加减乘除
没有位置加位置这种东西,无意义。向量加向量=首尾相连,得到新向量
位置+向量=新位置
位置-位置=新向量
向量-向量还是新向量。位置+向量=新位置。反向位移
向量乘向量属于点乘的概念
摄像机相关运动写在lateUpdate里,因为它最后执行。且以目标位置为基准。
向量点乘
记住结果是相加得出来的一个数
一般判断它>=0就是在我们前方
用V3.Dot算出自己的前方和目标与自己的连线的点乘(目标减自己就是两者间的距离向量)
公式推导
结论:夹角=Acos(向量a*向量b‘)
推导过程↓
前面一样,后面用推导出的公式,计算出对应的弧度(untiy只能返回弧度),然后将弧度转换成角度。 Acos(a*b),而向量a*b的值就是它们的点乘嘛
两者效果完全相同。能更好的理解点乘的效果。
向量叉乘
调试画线
Debug.DrawLine(transform.position,hit.point,Color.yellow) 起始点、碰撞点和颜色
Debug.DrawRay(transform.position,transform.forward*10,Color.yellow)
和上面不同的是,该方法需要一个初始点和一个具有方向和长度的向量,就得到了一条射线。
并不影响真正的射线,只是显示出来方便开发者进行调试。 注意开启显示图标
x坐标则x不参与计算,其他同理
在unity中你不用手写公式
配合这张图可以更好的理解。y大于0说明b在a右边
c.Y
之前点乘虽然可以得到角度,但并不能判断左右,叉乘就可以判断左右。
练习题
性能优化,不用每次都去计算出一个新变量