计算模型的中心点的方法
计算模型的中心点的方法
下面展示一些 内联代码片
。
/// <summary>
/// 计算模型的中心点
/// </summary>
/// <param name="tran"></param>
/// <returns></returns>
public Vector3 SetModelCenterEvent(Transform tran)
{
Vector3 position = tran.position;
Quaternion quaternion = tran.rotation;
Vector3 scale = tran.localScale;
tran.position = Vector3.zero;
tran.rotation = Quaternion.Euler(Vector3.zero);
tran.localScale = Vector3.one;
Vector3 center = Vector3.zero;
Renderer[] renders = tran.GetComponentsInChildren<Renderer>();
foreach (Renderer child in renders)
{
center += child.bounds.center;
}
center /= tran.GetComponentsInChildren<Renderer>().Length;
Bounds bounds = new Bounds(center, Vector3.zero);
foreach (Renderer item in renders)
{
bounds.Encapsulate(item.bounds);
}
tran.position = position;
tran.rotation = quaternion;
tran.localScale = scale;
foreach (Transform item in tran)
{
item.position = item.position - bounds.center;
}
return bounds.center + tran.position;
}