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

本文介绍了在Unity中获取物体尺寸的三种方法:通过Render组件、MeshFilter组件及碰撞器组件。详细解释了每种方法的具体实现,包括如何通过MeshRenderer、MeshFilter和碰撞器的属性获取物体的真实大小,特别指出旋转物体使用碰撞器组件可能存在的局限性。

获得物体的尺寸有几种,可以通过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;

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值