2016-03-29 9 views
4

この質問は、Unityゲームエンジンにのみ関連しています。Unityでは、メッシュを取得するか、そうでなければスプライトにローカル境界を取得しますか?

いわゆる「スプライト」(Unity Spriteクラス)という薄い3Dオブジェクトのビジュアル例です。

enter image description hereenter image description here

AABB示す(緑色の線)。 Unityでは、gpuのライブAABBは.boundsdoco)で与えられます。新しいCGの場合はexplanation of AABBです。

は(ユニティ(docodocoに「ローカル」、注意してください)意味:親オブジェクトの四元で、「世界は」シーンオブジェクトの四元手段)今

!読んで任意のユニティ・エンジニアのために:あなたはUnity Bounds

あなたはワールド空間でそれらをしたい場合は取得したいときに表示オブジェクトと通常ユニティで

、、、renderer.boundsワールド空間でUnity Boundsを返します。

ローカルスペースに入れたい場合、mesh.boundsはローカルスペースにUnity Boundsを返します。

これはUnityの基本であり、あなたはいつもそうしています。しかしながら。新しいスプライト、つまりSpriteRendererには、メッシュへの実際のアクセスはありません私が知る限りです。

(あなたが実際に.trianglesを得ることができますが、そこから巻きとサイズを再構築するために、非常に面倒になります。)

どのようにして、あなたはスプライトのためローカルUnity Boundsを得ることができますか?

は(sprite.bounds自体は助けにはならないこと、renderer.boundsちょうど同じであることに注意してください。)

+0

私はdownvotesを理解していません。 +1 – Programmer

+2

Unity以外の人々の中には、 "スプライト"クラスが3次元オブジェクトであることを理解していない – Fattie

答えて

5

を、私はあなたがSpriteRenderer.sprite.boundsを探していると思います。

public class LogBounds : MonoBehaviour { 
    void OnGUI() { 
     var r = GetComponent<SpriteRenderer>(); 
     GUILayout.Label("SpriteRenderer.bounds center " + r.bounds.center + " size " + r.bounds.size); 
     GUILayout.Label("SpriteRenderer.sprite.bounds center " + r.sprite.bounds.center + " size " + r.sprite.bounds.size); 
    } 
} 

​​

のtransformプロパティが変更されているようSpriteRenderer.sprite.boundsの値は変更しないこと注 - これらの値は、ローカル座標です。

+0

申し訳ありませんが、間違いは間違いです。 SpriteRenderer.boundsとSpriteRenderer.sprite.boundsは異なる値を返します。 –

+0

編集の追加コード/スクリーンショット –

+0

スプライトは、頂点の '三角形'と 'uv'プロパティを公開しています。これはまともな'メッシュ 'を作るために必要なものです。興味のある他のメッシュのようなプロパティが、スプライトにも適用可能か、簡単に推測できないもの(例:法線)があるのか​​わかりません –

関連する問題