在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,则返回零向量
}