Unity 计算所有物体包围盒的中心点

转载:https://blog.csdn.net/e295166319/article/details/52934072

[MenuItem ("MyMenu/设置物体的中心点")

 static void CalculateCenter()
    {
        // 1.动态技算 Transform parent = transform;

		Transform parent = 	Selection.activeGameObject.transform;  // 2.选中技算

        Vector3 postion = parent.position;
        Quaternion rotation = parent.rotation;
        Vector3 scale = parent.localScale;
        parent.position = Vector3.zero;
        parent.rotation = Quaternion.Euler(Vector3.zero);
        parent.localScale = Vector3.one;

        Vector3 center = Vector3.zero;
        Renderer[] renders = parent.GetComponentsInChildren<Renderer>();
        foreach (Renderer child in renders)
        {
            center += child.bounds.center;
        }
        center /= parent.GetComponentsInChildren<Transform>().Length;
        Bounds bounds = new Bounds(center, Vector3.zero);
        foreach (Renderer child in renders)
        {
            bounds.Encapsulate(child.bounds);
        }

        parent.position = postion;
        parent.rotation = rotation;
        parent.localScale = scale;

        foreach (Transform t in parent)
        {
            t.position = t.position - bounds.center;
        }
        parent.transform.position = bounds.center + parent.position;

    }

猜你喜欢

转载自blog.csdn.net/lizhenxiqnmlgb/article/details/88538602