Unity中獲取物體的尺寸(size)的三種方法

2021-10-08 10:36:15 字數 1956 閱讀 6281

如下,標準球體旁邊有個人物模型,目測人的寬度是0.5,高度是1,下面我們通過程式來獲取人物的真實size

這個值的結果真實反應出有meshrenderer這個元件的模型的尺寸。不須要再乘以localscale

// transform為人物模型的meshrenderer的transform

var size = transform.

getcomponent

<

renderer

>()

.bounds.size;

debug.log (

"x: "

+ size.x +

",y: "

+ size.y)

;

輸出結果:

x: 0.5940213,y: 1.102448
此時我們把人物模型的scalex改為2

輸出結果為:

x: 1.188043,y: 1.102448
通過meshfilter獲得原始模型的mesh,該值返回的結果是原始mesh的尺寸。

// transform為人物模型的meshfilter的transform

var size = transform.

getcomponent

<

meshfilter

>()

.mesh.bounds.size;

debug.log (

"x: "

+ size.x +

",y: "

+ size.y)

;

此時不管人物怎麼縮放,輸出結果都是一樣

x: 0.5940213,y: 1.102448
為物體加入collider,然後使用collider.bounds.size。不過這個不能非常好的反應物體的大小,bounds獲得的是物體的外包矩形,並且這個外包矩形的x,y,z和世界座標一致。因此,若物體有旋轉,獲得的尺寸就不能反應出物體的真實大小,僅僅是其外包矩形的大小。如下,人物身上有乙個膠囊碰撞體

// transform為人物模型的meshfilter的transform

var size = transform.

getcomponent

<

collider

>()

.bounds.size;

debug.log (

"x: "

+ size.x +

",y: "

+ size.y)

;

輸出結果如下:

x: 0.2,y: 1
現在,我們把人物傾斜一下

輸出結果如下:

x: 0.6194265,y: 0.8812351

Unity中物體尺寸獲取

1 gameobject.getcomponent meshrenderer 或 skinnedmeshrenderer bounds.size.x或者是,這種方式獲得是這個物體實際的大小尺寸,不需要再乘以自己或者父級的縮放比例 2 gameobject.getcomponent collider ...

unity 獲取物體尺寸

以size的x方向為例 1 gameobject.renderer.bounds.size.x 這個值的結果真實反應出有meshrenderer這個元件的模型的尺寸。不需要再乘以localscale.x。2 gameobject.getcomponent mesh.bounds.size.x 通過m...

unity獲取物體尺寸

以size的x方向為例 1 gameobject.renderer.bounds.size.x 這個值的結果真實反應出有meshrenderer這個元件的模型的尺寸。不需要再乘以localscale.x。2 gameobject.getcomponent mesh.bounds.size.x 通過m...