web-dev-qa-db-ja.com

Unity3dで2Dオブジェクトの幅を取得する

Unity3dの新しい2Dツールを使用していて、2Dポリゴンコライダーがアタッチされたゲームオブジェクトがあります。このオブジェクトの幅を取得する方法を理解したいだけです!なぜこれがとても難しいのですか?コライダーもゲームオブジェクトにも、「境界」または「サイズ」プロパティを持つものがあります。ただし、そうしたとしても、vector3オブジェクトから幅を推定するにはどうすればよいでしょうか。 vector3オブジェクトについて私が理解していることから、それらはシーンの原点からの長さ(大きさ)を与えます。では、シーンの原点からの距離を使用して、ゲームオブジェクトの幅を決定するにはどうすればよいですか?どんな助けでも大歓迎です。

6
Tyler Jones

この投稿 によると、2Dコライダーには実際に欠落している境界変数があるはずであり、将来のリリースで利用できるようになる予定です。

したがって、今のところ、回避策を実行する必要があるようです。 1つは、ゲームオブジェクトにスプライトレンダラーコンポーネントを追加し、それにダミーイメージを追加して、それが表示されないように無効に設定することです。次に、gameObject.renderer.boundsを使用してスプライトの境界を取得できます。

5
Arttu Peltonen

これを取得するには(少なくとも)2つの方法があります。


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の場合は、前者の方が適切な場合があります。

14
David