Unity判断向量夹角和看向物体
Unity判断向量夹角和看向物体
理理在进行学习时,我学了一堆api,经常容易搞混,具体怎么用经常混乱,于是记录一下,如何判断向量夹角。
>一,Vector3.dot(比较麻烦,一般不太推荐)
1 | float angle = Mathf.Acos(Vector3.Dot(transform.forward, target.position - transform.position)) * Mathf.Rad2Deg; |
通过Vector3.dot,传入两个向量作为参数,会得到点乘结果,将点乘结果用反三角函数求出弧度值,再转化为角度值。
二,Vector3.Angle (最推荐)
1 | float angle = Vector3.Angle(transform.forward, (target.position - transform.position).normalized); |
直接传入两个向量,自己判断角度值,挺推荐的。
三,Quaternion.Angle
1 | float angle = Quaternion.Angle(transform.rotation, target.rotation); |
如果你有目标物体的旋转(Quaternion),你可以使用Quaternion.Angle来计算两个旋转之间的夹角:
四,叉乘(不太推荐)
1
2
Vector3 cross = Vector3.Cross(transform.forward, target.position - transform.position);
float angle = Mathf.Acos(Vector3.Dot(transform.forward, target.position - transform.position) / (transform.forward.magnitude * (target.position - transform.position).magnitude)) * Mathf.Rad2Deg;
1 | Vector3 cross = Vector3.Cross(transform.forward, target.position - transform.position); |
此外还可以通过射线检测等方法获取夹角,最推荐Vector3.Angle
然后是看向物体,主要两个API,一个是Transform.LookAt;一个是Quaternion.LookRotation;一个是Vector3.RotateTowards,这个方法可以将当前物体的一个向量旋转到目标物体的方向。
评论
匿名评论隐私政策