Unity一个点绕另一个点旋转
参数: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; }