【问题标题】:Unity width and height of the gameobject统一游戏对象的宽度和高度
【发布时间】:2019-02-15 06:47:03
【问题描述】:

我在unty中有以下游戏对象:

我需要从 c# 中获取它的宽度和高度

【问题讨论】:

    标签: unity3d


    【解决方案1】:

    有两种可能的方法来做到这一点。如果您的对象有一个渲染器,您可以使用renderer.bounds.size,它将返回一个具有高度和宽度(以及深度,如果它是 3D 的话)的向量。

    您还可以使用collider.bounds.size 从游戏对象上的碰撞器获取宽度和高度。试试这样的:

    public Vector3 size;
    private MeshRenderer renderer;
    
    private void Start() {
        renderer = GetComponent<MeshRenderer>();
        size = renderer.bounds.size;
    }
    

    希望这会有所帮助!

    【讨论】:

      【解决方案2】:

      GameObject 没有宽度或高度,但它包含的信息可以。在您的情况下,您有一个 MeshRenderer 并且方便地有一个 bounds 属性,它将返回一个...

      轴对齐的边界框将对象完全包围在世界空间中。

      如果您有对该对象的MeshRenderer 的引用:

      MeshRenderer renderer;
      

      那么获取边界就这么简单:

      renderer.bounds;
      

      然后你可以观察它的size属性。


      请记住,这是世界空间边界信息,因此所有旋转和缩放都会影响它。如果您想要网格本身的原始细节,您需要参考MeshFilter,查看其mesh 属性,并在that 上使用bounds 属性@ 987654334@对象。

      【讨论】:

      • 是否考虑transform.scale和transform.localScale?
      • @KamranBigdely 确实如此。我已经更新了我的答案,还包括有关如何获取原始 Mesh 对象本身的边界详细信息的信息,它不考虑转换细节。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-07
      • 1970-01-01
      • 1970-01-01
      • 2012-10-10
      相关资源
      最近更新 更多