获得2d对象的宽度在统一3d

Tyl*_*nes 6 unity-game-engine

我在Unity3d中使用了新的2d工具,并且我有一个附加了2d多边形对撞机的游戏对象.我只是想了解如何获得这个对象的宽度!为什么这么难?对撞机或游戏对象具有任何具有"边界"或"大小"属性的东西.但是,即使他们这样做了,我如何从vector3对象推断宽度?根据我对vector3对象的理解,它们给出了场景原点的长度(幅度).那么我如何利用场景原点的距离来确定我的游戏对象的宽度?任何帮助将不胜感激.

Dav*_*vid 14

有两种方法(至少)可以得到这个.


var renderer = gameObject.GetComponent<Renderer>();
int width = renderer.bounds.size.x;
Run Code Online (Sandbox Code Playgroud)

要么


var collider2D= gameObject.GetComponent<Collider2D>();
var collider = collider2D.collider; //Edit, thanks to Arttu's comment!
int width = collider.bounds.size.x;
Run Code Online (Sandbox Code Playgroud)

对于2D情况,前者可能更合适.


Art*_*nen 5

根据这篇文章,看起来像2D碰撞器确实应该有缺失的边界变量,它将在未来的版本中提供.

所以现在看起来你将不得不做一个解决方法.一种可能是向GameObject添加一个Sprite Renderer组件,向其添加一个虚拟图像并将其设置为禁用,因此它永远不可见.然后你可以gameObject.renderer.bounds用来获得精灵界限.