2014-05-08 7 views
6

Ich versuche eine Reihe aus einigen quadratischen Sprites zu erstellen, die ich habe. So um die Breite dieser Sprites zu erhalten iDie Breite eines Sprites erhalten

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

Und dann die Zeile zu bilden, ich bin uisng

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

Aber die Sprites überlappen einander immer noch und keine richtige Reihe bilden.
Was mache ich hier falsch und wie kann ich es korrigieren?

Antwort

7

Wenn das Sprite res 128x128 Pixel ist.
und dies kann zu Einheiten des Sprites Pixels ist 100.

So Ihre tileWidth sein: renderer.bounds.size.x = 128/100 = 1,28
Aber Sie verwenden int: (int) renderer.bounds.size. x = (int) 1.28 = 1
und das ist der Grund, warum Ihre Sprites einander überlappen.

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

danke ... gelernt eine neue Sache über Pixel zu Einheit – vaibhav

+1

Wenn das Sprite gedreht wird, kann dies größere oder kleinere Werte als erwartet zurückgeben. – jjxtra

13

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

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

auch Sie Mus Aufmerksamkeit auf Pixel pro Einheiten Wert.