Unity 模型中心点偏移问题解决方法

简介: Unity 模型中心点偏移问题解决方法

开发过程中我们可能会遇到这样的模型:

image.gif

模型的坐标点与其实际位置相差甚远,这时如果想要操作这个物体的Transform则不能得到预想的结果。例如我们现在旋转上图例中的车轮:

image.gif

解决这种问题的思路是,创建一个新物体作为该模型物体的父级,新物体的坐标位置设为该模型的中心点位置,手动的去设置这个位置会比较麻烦,也不能做到十分精确,这时我们需要用到Bounds类Encapsulate函数去计算中心点位置:

image.gif

因此我们需要获取该模型物体的所有MeshRenderer,包括子物体,声明一个新的Bounds包围盒,遍历所有的MeshRenderer,调用Encapsulate函数去计算包围盒的边界及中心。

代码如下:

usingUnityEngine;
usingUnityEditor;
publicclassAutoModelCenter{
/// <summary>/// 获取模型的中心点/// </summary>    [MenuItem("SKFramework/Tools/GetModelCenter")]
publicstaticvoidGetModelCenter()
    {
//如果未选中任何Transform returnif (Selection.activeTransform==null) return;
Transformtransform=Selection.activeTransform;
Boundsbounds=newBounds(Vector3.zero, Vector3.zero);
//获取所有MeshRenderer 包括子物体varmrs=transform.GetComponentsInChildren<MeshRenderer>(true);
Vector3center=Vector3.zero;
for (inti=0; i<mrs.Length; i++)
        {
center+=mrs[i].bounds.center;
//Encapsulate函数重新计算boundsbounds.Encapsulate(mrs[i].bounds);
        }
center/=mrs.Length;
//创建一个新物体作为空父级GameObjectobj=newGameObject();
obj.name=transform.name;
obj.transform.position=center;
obj.transform.rotation=Quaternion.identity;
obj.transform.SetParent(transform.parent);
transform.SetParent(obj.transform);
    }
}

image.gif

有了该工具后我们就可以获得车轮的中心点,然后就可以正常旋转它了:

image.gif

目录
相关文章
|
27天前
|
缓存 API 开发工具
有关Unity使用Rider编辑器无法弹出代码提示的有效解决方法
【11月更文挑战第13天】在 Unity 中使用 Rider 编辑器时,若遇到代码提示无法弹出的问题,可以通过检查 Rider 设置(如自动补全选项、Unity 插件安装、索引设置)、Unity 项目设置(如解决方案正确关联、脚本导入设置)以及环境和依赖关系(如 .NET SDK 版本兼容性、Unity 和 Rider 版本兼容性)等方面进行排查和解决。
|
6月前
|
图形学
【unity小技巧】FPS游戏实现相机的偏移震动、武器射击后退和后坐力效果
【unity小技巧】FPS游戏实现相机的偏移震动、武器射击后退和后坐力效果
62 1
|
6月前
|
存储 图形学
【unity小技巧】unity中导入下载的3D模型及albedo/baseColor、normal 、AO/Occlus、metallic、roughness贴图纹理设置
【unity小技巧】unity中导入下载的3D模型及albedo/baseColor、normal 、AO/Occlus、metallic、roughness贴图纹理设置
131 0
|
6月前
|
图形学
初识Unity——基本模型、场景操作、世界坐标系和局部坐标系
初识Unity——基本模型、场景操作、世界坐标系和局部坐标系
163 1
|
存储 图形学
浅谈Unity之模型裁剪shader
Unity之模型裁剪shader
|
图形学
浅谈Unity之ShaderGraph-模型膨胀流动
Unity之ShaderGraph-模型膨胀流动
|
图形学
【Unity实战系列】如何把你的二次元老婆/老公导入Unity进行二创并且进行二次元渲染?(附模型网站分享)
【Unity实战系列】如何把你的二次元老婆/老公导入Unity进行二创并且进行二次元渲染?(附模型网站分享)
547 0
【Unity3D--自由观察模型】模型自动旋转+触屏旋转和缩放
展示3D模型,同时实现模型自动旋转和触屏旋转和缩放
436 0
|
图形学
Unity 导入原神人物模型
Unity 导入原神人物模型
4357 2
Unity 导入原神人物模型