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