wake-up-neo.net

Die Breite eines Sprites erhalten

Ich versuche, aus einigen quadratischen Sprites, die ich habe, eine Reihe zu erstellen. Um die Breite dieser Sprites zu erhalten, verwende ich sie 

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

Und dann, um die Reihe zu bilden, bin ich dabei

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

Die Sprites überlappen sich jedoch immer noch und bilden keine richtige Reihe.
Was mache ich hier falsch und wie kann ich es korrigieren?

9
vaibhav

Wenn die Auflösung des Sprites 128 x 128 Pixel beträgt.
Die Pixel in Einheiten dieses Sprites sind 100.

Ihre tileWidth lautet also: renderer.bounds.size.x = 128/100 = 1.28
Sie verwenden jedoch int: (int) renderer.bounds.size.x = (int) 1.28 = 1
und deshalb überlappen sich Ihre Sprites.

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

Wenn Sie Unity 5 verwenden, müssen Sie diesen Code verwenden: 

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

sie müssen auch den Wert für Pixel pro Einheit beachten.

14
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;
0
user999913