【问题标题】:Unity3D: Convert all game objects to same size irrespective of it's scaleUnity3D:将所有游戏对象转换为相同大小,而不管其比例如何
【发布时间】:2021-01-27 04:24:34
【问题描述】:

假设我有一个参考 GameObject,Cube,比例为 (1,1,1)。还有另一个具有比例 (1,1,1) 的 GameObject,但大小是 Cube 的 3 倍。如何动态更改 Game 对象的比例以适应 Cube 的大小?

【问题讨论】:

    标签: c# scala unity3d camera gameobject


    【解决方案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; ;)
    猜你喜欢
    • 1970-01-01
    • 2016-02-16
    • 2017-12-14
    • 1970-01-01
    • 2014-08-05
    • 2019-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多