web-dev-qa-db-fra.com

Obtenir la largeur d'un sprite

J'essaie de créer une ligne à partir de certains sprites carrés que j'ai. Donc, pour obtenir la largeur de ces sprites, j'utilise 

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

Et puis pour former la rangée je suis uisng

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

Mais les sprites se chevauchent toujours et ne forment pas une rangée appropriée.
Qu'est-ce que je fais de mal ici et comment puis-je le corriger?

9
vaibhav

Si la résolution de l'image-objet est de 128x128 pixels.
Et le nombre de pixels en unités de ce sprite est égal à 100.

Donc, votre largeur de mosaïque sera: renderer.bounds.size.x = 128/100 = 1.28
Mais vous utilisez int: (int) renderer.bounds.size.x = (int) 1.28 = 1
et c’est pourquoi vos sprites se chevauchent.

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

Si vous utilisez Unity 5, vous devez utiliser ce code: 

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

vous devez également faire attention à la valeur Pixel Per Units.

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