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

 

  

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM