web-dev-qa-db-ja.com

スプライトの幅を取得する

私が持っているいくつかの正方形のスプライトから行を作成しようとしています。だから私が使用しているこれらのスプライトの幅を取得するには

tileWidth = (int)tileSet[0].renderer.bounds.size.x;

そして、私は行を形成するために私はuisngです

for(int i = 0; i < tileSet.Length ; i++){
    if((i+1)*tileWidth<screenWidth){
        tileSet[i].transform.position = new Vector3(i*tileWidth,0,0);
    }
}

しかし、スプライトはまだ互いに重なり合っており、適切な行を形成していません。
ここで何が悪いのですか、どうすれば修正できますか?

12
vaibhav

スプライトの解像度が128x128ピクセルの場合。
そして、このSpriteのPixels To Unitsは100です。

したがって、タイル幅は次のようになります:renderer.bounds.size.x = 128/100 = 1.28
しかし、intを使用します:(int)renderer.bounds.size.x =(int)1.28 = 1
これが、スプライトが互いに重なり合う理由です。

float tileWidth = (float)tileSet[0].renderer.bounds.size.x;
15
Verv

Unity 5を使用している場合は、次のコードを使用する必要があります。

float tileWidth = tileSet[0].GetComponent<SpriteRenderer>().bounds.size.x;

また、Pixel Per Units値に注意する必要があります。

17
MBehtemam
 SpriteRenderer spriteRenderer = gameObject.GetComponent<SpriteRenderer>();

        //size in Units
        Vector3 itemSize = spriteRenderer.bounds.size;

        float pixelsPerUnit = spriteRenderer.Sprite.pixelsPerUnit;


        itemSize.y *= pixelsPerUnit;
        itemSize.x *= pixelsPerUnit;
1
user999913