參數:Vector3 point 要旋轉的點
Vector3 pivot 中心點
Vector3 euler 旋轉的角度
函數:Quaternion.Euler(float x, float y, float z) 返回一個繞Z軸旋轉z度、圍繞X軸旋轉x度、圍繞Y軸旋轉y度的旋轉。另一個重載函數Quaternion.Euler(Vector3 euler)
步驟:
1、計算方向向量
Vector3 direction = point - pivot
2、計算方向向量旋轉后的向量
Vector3 rotatedDirection =Quaternion.Euler(euler) * direction // 這句代碼實現了旋轉向量的功能
3、計算旋轉后的點
Vector3 rotatedPoint = rotatedDirection + pivot
完整代碼:
/// <summary> /// 一個點繞另一個點旋轉 /// </summary> /// <param name="point">要旋轉的點</param> /// <param name="pivot">中心點</param> /// <param name="euler">旋轉的角度</param> /// <returns></returns> public Vector3 RotatePointAroundPivot(Vector3 point, Vector3 pivot, Vector3 euler) { Vector3 direction = point - pivot; Vector3 rotatedDirection = Quaternion.Euler(euler) * direction; Vector3 rotatedPoint = rotatedDirection + pivot; return rotatedPoint; }