unity 由兩個向量求夾角


1.

float angle = Vector3.Angle (fromVector, toVector); //求出兩向量之間的夾角  
Vector3 normal = Vector3.Cross (fromVector,toVector);//叉乘求出法線向量  
angle *= Mathf.Sign (Vector3.Dot(normal,upVector));  //求法線向量與物體上方向向量點乘,結果為1或-1,修正旋轉方向  

2.

Vector3 velocity = Quaternion.Inverse (transform.rotation)*destinationVector; //對目標向量進行反向旋轉,得到的新向量與z軸的夾角即為目標向量與當前物體方向的夾角          
float angle = Mathf.Atan2 (velocity.x,velocity.z) * Mathf.Rad2Deg; //返回tan值為x/z的角的弧度,再轉化為度數。  

3.

數學法:已知a,b兩個向量

cosθ=X;  (X=(a*b)/(|a|*|b|))

然后求θ=arccosX c#里是Mathf.Acos(X);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM