[Unity]如何快速的換算角度,並旋轉物體角度到目標

常見的寫法思維如下 :

//找到方向向量並均化
Vector2 direction = 滑鼠位置(position) - 發射中心(position)

//然後將Vector2的x y值帶入公式
public static float FindDegree(float x, float y){
float value = (float)((Mathf.Atan2(x, y) / Math.PI) * 180f);

if(value <= 0) value += 360f;
return value;

//最後用eulerangles 旋轉角度
transform.eulerangles = Vector3.forward * rotValue



同時補充一下常見的選轉角度寫法
1.
transform.rotation = Quaternion.Euler(new Vector3(0,90,0)); 
2.
transform.eulerAngles = new Vector3(0,90,0);

兩種都是針對世界角度進行變更,假使要用子節點的話,就使用
transform.localEulerAngles = new Vector3(0,90,0);

 
假使是要計算當前目標面向的世界座標的話 可以考慮利用 Quaternion.LookRotation
public static Quaternion LookRotation(Vector3 forward, Vector3 upwards = Vector3.up);    
她可以用兩個目標座標相減後得到的相對座標找到的向量值  
配合Position.up找到方位角,進而進行轉向  
常見寫法如範例 :
       
//計算當前方向並轉向
//計算向量值坐標
var direction = WayPoints[currentWP].transform.position - NPC.transform.position;
//用Quaternion.LookRotation找出方向角 再用Quaternion.Slerp 進行轉向
NPC.transform.rotation = Quaternion.Slerp(NPC.transform.rotation, Quaternion.LookRotation(direction), speed *Time.deltaTime );

留言

熱門文章