簡體   English   中英

TransformPoint() 方法附加到什么對象的變換是否重要?

[英]Does it matter what object's transform the TransformPoint() method is attached to?

TransformPoint()方法附加到什么對象的變換是否重要,因為它應該返回世界空間位置? 例如給出以下結構:

  • 對象1

    • 子對象1
  • 對象2

無論 Obj1 和 ChildObj1 的位置如何,執行Obj1.transform.TransformPoint(Obj2.transform.position)都應該返回與ChildObj1.transform.TransformPoint(Obj2.transform.position)相同的內容。

這樣對嗎? 如果是這樣,我錯過了什么? 為什么 TransformPoint 必須附加到對象的變換?

TransformPoint接受一個 Vector3 並返回一個 Vector3。 它所做的只是將一個點從 localSpace 轉換為 WorldSpace。 由於您的示例顯示 Obj2 不是 Obj1 的孩子,因此可能會出現混淆。

讓我們說以下幾點:

  • Obj1 在世界位置 (5,0,0)
  • ChildObj1 在 World 位置位於 (8,0,0),在 Local 位置為 (3,0,0)(因為它比 Obj1 高 3 個 x 單位。
  • Obj2 在世界位置 (6,0,0)

以下是代碼如何針對上述場景進行調整:

Vector3 point1 = Obj1.transform.TransformPoint(Obj2.transform.position);  
//point1 = (11,0,0)
Vector3 point2 = ChildObj1.transform.TransformPoint(Obj2.transform.position) 
//point2 = (14,0,0)

這里要注意的重要一點是 transform.position 返回世界位置。 如果您使用 transform.LocalPosition 其中 Obj2 是根對象 (localPosition = 0,0,0),那么結果將是:

Vector3 point1 = Obj1.transform.TransformPoint(Obj2.transform.localPosition);  
//point1 = (5,0,0)
Vector3 point2 = ChildObj1.transform.TransformPoint(Obj2.transform.localPosition) 
//point2 = (8,0,0)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM