在unity中 一个父级有若干个子级 ,想要找到这些模型物体的中心点,找到了一个简单的方法代码如下,推荐使用GetWorldCenter,使用Bounds结构体中的中心点即可

    public static Vector3 GetLocalCenter(GameObject target)
    {
        MeshFilter meshFilter = target.GetComponent<MeshFilter>();
        if (meshFilter != null && meshFilter.mesh != null)
        {
            Vector3 center = Vector3.zero;
            foreach (Vector3 vertex in meshFilter.mesh.vertices)
            {
                center += vertex;
            }
            center /= meshFilter.mesh.vertexCount;
            return center;
        }
        return Vector3.zero; // 如果找不到MeshFilter或Mesh为空,则返回零向量
    }
    //获取obj下共同中心点
    public static Bounds GetWorldCenter(GameObject target)
    {
        Renderer[] renderers = target.GetComponentsInChildren<Renderer>();
        Bounds bounds = new Bounds();
        if (renderers.Length > 0)
        {
             bounds = new Bounds(renderers[0].bounds.center, Vector3.zero);
            foreach (Renderer renderer in renderers)
            {
                bounds.Encapsulate(renderer.bounds);
            }
            return bounds;
        }
        return bounds; // 如果没有找到Renderer,则返回零向量
    }

更多推荐