簡體   English   中英

Unity - 如何獲取父游戲對象中心的位置

[英]Unity - How to get location of center of parent gameobject

我有一個關於如何獲得通過將子對象添加到父對象而創建的轉換的問題。 通過查看下面的圖片更容易理解我的意思。 變換 我知道父母的世界位置實際上是 0 但我如何獲得顯示的位置?

此致

首先,一些信息。 該位置就是該GameObjectCenter 除了在Pivot放置手柄之外,還可以將其放置在與Transform.position相同的位置。 您可以在Unity Editor中在這兩種手柄顯示模式之間切換。

因此,您想找到Center手柄的位置。 這取決於父級是否具有Renderer

在您的情況下,父對象沒有Renderer ,則必須進入gameObject的子對象並平均其變換位置:

Vector3 sumVector = new Vector3(0f,0f,0f);

foreach (Transform child in parentObject.transform)
{          
    sumVector += child.position;        
}

Vector3 groupCenter = sumVector / parentObject.transform.childCount;

如果情況略有不同,並且父gameObject具有Renderer ,那么它會容易得多:

Vector3 groupCenter = parentObject.getComponent<Renderer>().bounds.center;

我遇到了同樣的問題。 感謝@Ruzihm 的回答。 我想制作中心,但不知道對象是否有'Renderer',所以我寫了這樣的遞歸函數來獲取對象的中心位置。

Vector3 getCenter(Transform obj)
{
    Vector3 center = new Vector3();
    if (obj.GetComponent<Renderer>() != null)
    {
        center = obj.GetComponent<Renderer>().bounds.center;
    }
    else
    {
        foreach (Transform subObj in obj)
        {
            center += getCenter(subObj);
        }
        center /= obj.childCount;
    }
    return center;
}

暫無
暫無

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

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