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;
    }

 

  

 

posted @ 2021-03-17 09:53  三里路异乡客  阅读(3070)  评论(0编辑  收藏  举报