Tyler Jones
Tyler Jones

Reputation: 1343

Getting width of 2d object in unity 3d

I'm using the new 2d tools in Unity3d, and I have a game object with a 2d polygonal collider attached to it. I just want to understand how to get the width of this object! Why is this so difficult? The collider nor the game object have anything that has a "bounds" or "size" property. Even if they did, however, how would I extrapolate width from a vector3 object? From what I understand about vector3 objects, they give a length (magnitude) from the origin of the scene. So how could I use distance from the scene's origin to determine with width of my game object? Any help would be greatly appreciated.

Upvotes: 8

Views: 34295

Answers (2)

David
David

Reputation: 16277

There are two ways(at least) to get this.


var renderer = gameObject.GetComponent<Renderer>();
int width = renderer.bounds.size.x;

or


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

For your 2D case, the former might be more appropriate.

Upvotes: 16

Arttu Peltonen
Arttu Peltonen

Reputation: 1260

According to this post, looks like 2D colliders indeed should have the missing bounds variable, and it will be made available in a future release.

So looks like for now you'll have to make do with a workaround. One could be to add a Sprite Renderer component to your GameObject, add a dummy image to it and set it disabled so it's never visible. Then you can use gameObject.renderer.bounds to get the sprite bounds.

Upvotes: 5

Related Questions