【Unity 计算所有物体包围盒的中心点】转载:https://blog.csdn.net/e295166319/article/details/52934072
[MenuItem ("MyMenu/设置物体的中心点") static void CalculateCenter()
{
// 1.动态技算 Transform parent = transform;
Transform parent =Selection.activeGameObject.transform;
// 2.选中技算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();
foreach (Renderer child in renders)
{
center += child.bounds.center;
}
center /= parent.GetComponentsInChildren().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;
}
parent.transform.position = bounds.center + parent.position;
}
推荐阅读
- Unity学习笔记|Unity学习笔记--实现UI元素跟随3D物体
- unity3d|Character Controller角色控制器组件
- Unity3D|unity3d-多人坦克对战
- Unity3D|Unity3d之坦克对战游戏 AI设计
- 笔记|Unity角色控制器CharacterController移动代码
- Unity3d|【Unity3D Debug】“CharacterController.Move()在处理角色移动时,角色不论怎么转向其移动方向始终不变”的解决方案
- Unity3D|Unity3D 角色控制器 Character Controller
- unity3d|Unity3D实现3D立体游戏原理及过程
- Unity3d|Unity Gameplay工具集(Unity Gameplay Tool Set)