杂谈(如何获得物体的尺寸)(11)

获得物体的尺寸有几种,可以通过render组件、Meshfiter组件或者是通过给物体添加碰撞器来获取到物体的尺寸,具体方法是:

一:gameobject.renderer.bound.x;
这个方法的具体返回值是MeshRenderer这个组建的模型尺寸

二:

gameObject.GetComponent<MeshFilter>().mesh.bounds.size.x

这个方法是通过Meshfiter获得原始的Mesh,该值返回的是原始的mesh尺寸,需要乘以LocalScale.x才能获得真实的模型大小

gameObject.GetComponent<MeshFilter>().mesh.bounds.size.x*gameObject.transform.localScale.x;

三:为想要获取的物体添加碰撞器组件,通过碰撞器组件的大小来获得物体模型的大小,(XXX.collider.bounds.size;)这个方法有几个去缺点就是,他不一定能很好的返回真实物体的大小,
由于Bounds获得的是物体的外包举行,并且这个外包矩形的x、y、z和世界坐标一样,如果物体旋转的话,那么这个方法获得的只是外包矩形的大小。至于外包矩形是什么意思,其实很简单外包矩形是在GIS(Geographic Information System)或者计算机图形学(Computer Graphics)上非常重要的概念。
在一个空间单元上有一个不规则的图形,如果有这么一个矩形,他的面积保持最小,但是能把整个不规则矩形完全包含,那个这个矩形就叫做外包矩形

在这里插入图片描述

如获得地形的尺寸:
terrainWidth = terrain.collider.bounds.size.x;

terrainLength = terrain.collider.bounds.size.z;

terrainHeight = terrain.collider.bounds.size.y;

发布了67 篇原创文章 · 获赞 3 · 访问量 1919

猜你喜欢

转载自blog.csdn.net/lfanyize/article/details/102930195