我在Unity3d中使用新的2d工具,并且我有一个附加了2d多边形对撞机的游戏对象。我只是想了解如何获得这个对象的宽度!为什么这么难?对撞机或游戏对象具有任何具有“边界”或“大小”属性的东西。 但是,即使他们这样做了,我如何从vector3对象推断宽度?根据我对vector3对象的理解,它们给出了场景原点的长度(幅度)。那么我如何利用场景原点的距离来确定我的游戏对象的宽度?任何帮助将不胜感激。
答案 0 :(得分:14)
有两种方式(至少)可以实现这一点。
var renderer = gameObject.GetComponent<Renderer>();
int width = renderer.bounds.size.x;
或
var collider2D= gameObject.GetComponent<Collider2D>();
var collider = collider2D.collider; //Edit, thanks to Arttu's comment!
int width = collider.bounds.size.x;
对于2D情况,前者可能更合适。
答案 1 :(得分:5)
根据this post,看起来像2D碰撞器确实应该有缺失的边界变量,它将在未来的版本中提供。
所以看起来现在你必须要做一个解决方法。一种可能是向GameObject添加一个Sprite Renderer组件,向其添加一个虚拟图像并将其设置为禁用,因此它永远不可见。然后你可以使用gameObject.renderer.bounds
来获得精灵界限。