模型的实际大小和中心点计算
public static void GetModelSize(this Transform varTransform,out Vector3 varSize, out Vector3 varCenter)
{
Vector3 postion = varTransform.postion;
Quaternion rotation = varTransform.rotation;
Vector3 scale = varTransform.localScale;
Transform parent = varTransform.parent;
varTransform.SetParent(null);
varTransform.postion = Vector3.zero;
varTransform.rotation = Quaternion.Euler(Vector3.zero);
varTransform.localScale = Vector3.one;
Renderer[] renders = varTransform.GetComponentsInChildren<Renderer>();
List<Renderer> TempRenders = new List<Renderer>();
for(int i = 0; i < renders.Length; i++)
{
if(renders[i].transform .GetCompoent<ParticleSystem>() != null)
continue;
TempRenders.Add(renders[i]);
}
renders = TempRenders.ToArray();
Vector3 center = Vector3.zero;
foreach(Renderer item in renders)
{
center += item.bounds.center;
}
center /= renders.Length;
Bounds bounds = new Bounds(center, Vector3.zero);
foreach(Renderer item in renders)
{
Bounds tempbounds = item.bounds;
bounds.Encapsulate(tempbounds);
}
varTransform.SetParent(parent);
varTransform.postion = postion;
varTransform.rotation = rotation;
varTransform.localScale = scale;
varSize = bounds.size;
varCenter = bounds.center;
}