为什么有这个需要,原因是如果一个父物体下有很多子物体,此时如果要做摄像机的旋转,那么摄像机肯定要定位一个目标点,,要求这个目标点至少要在众多物体的中心,这样旋转的体验会非常好,如何做呢,看下面的一个小demo
程序运行一下:
public class delete : MonoBehaviour {
public Transform parent; //这个parent下面挂着四个物体
public GameObject tt; //这个物体是为了说明清楚计算后的中心点的位置的
// Use this for initialization
void Start () {
tt.transform.position = GetCenter(parent);
}
// Update is called once per frame
void Update () {
}
//计算模型的中心点
public static Vector3 GetCenter(Transform tt)
{
Transform parent = tt;
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<Renderer>().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;
}
FR:徐海涛(Hunk Xu) (QQ技术交流群:386476712)