Получение ширины 2d объекта в unity 3d

Я использую новые 2d-инструменты в Unity3d, и у меня есть игровой объект с прикрепленным к нему 2D-полигональным коллайдером. Я просто хочу понять как получить ширину этого объекта! Почему это так трудно? Ни коллайдер, ни игровой объект не имеют ничего, что имеет свойство "bounds" или "size". Даже если бы они это сделали, как бы я экстраполировал ширину из объекта vector3? Из того, что я понимаю об объектах vector3, они дают длину (величину) от начала сцены. Так как может Я использую расстояние от начала сцены, чтобы определить ширину моего игрового объекта? Любая помощь будет очень признательна.

2 ответов


по данным этот пост, похоже, 2D-коллайдеры действительно должны иметь отсутствующую переменную bounds, и она будет доступна в будущем выпуске.

похоже, что сейчас вам придется обойтись обходным путем. Можно добавить компонент Sprite Renderer в GameObject, добавить к нему фиктивное изображение и отключить его, чтобы он никогда не был виден. Тогда вы можете использовать gameObject.renderer.bounds чтобы получить границы спрайта.


есть два способа(по крайней мере) получить это.


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-случая первый может быть более подходящим.