Unity3D:将所有游戏对象转换为相同大小,而不管其比例如何
Posted
技术标签:
【中文标题】Unity3D:将所有游戏对象转换为相同大小,而不管其比例如何【英文标题】:Unity3D: Convert all game objects to same size irrespective of it's scale 【发布时间】:2021-01-27 04:24:34 【问题描述】:假设我有一个参考 GameObject,Cube,比例为 (1,1,1)。还有另一个具有比例 (1,1,1) 的 GameObject,但大小是 Cube 的 3 倍。如何动态更改 Game 对象的比例以适应 Cube 的大小?
【问题讨论】:
【参考方案1】:获取每个网格过滤器并使用 Mesh.bounds.size 获取它们的大小。要使第二个对象适合第一个对象,您需要根据网格大小的不同更改第二个对象的比例。
// If you want it to be 100% accurate, you should multiply RefSize here
// by RefMeshFilter.transform.lossyScale so that the other object's
// size also accounts for the reference object's scale.
var RefSize = RefMeshFilter.bounds.size;
var MySize = MyMeshFilter.bounds.size;
var NewScale = new Vector3(RefSize.x / MySize.x, RefSize.y / MySize.y, RefSize.z / MySize.z);
// I'm un-parenting and re-parenting here as a quick way of setting global/lossy scale
var Parent = MyMeshFilter.transform.parent;
MyMeshFilter.transform.parent = null;
MyMeshFilter.transform.localScale = NewScale;
MyMeshFilter.transform.parent = Parent;
【讨论】:
only way to set global/lossy scale
.. yesn't ;) 你也可以去transform.localScale = Parent ? new Vector3(NewScale.x / Parent.lossyScale.x, NewScale.y / Parent.lossyScale.y, NewScale.z / Parent.lossyScale.z) : NewScale;
;)以上是关于Unity3D:将所有游戏对象转换为相同大小,而不管其比例如何的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Unity3D 中分配给一个游戏对象的两种材质之间切换?
Unity3D 灵巧小知识点 ☀️ | 获取某个游戏对象下的所有子物体