获得精灵的宽度

vai*_*hav 11 sprite game-engine unity-game-engine

我试图从我有的一些方形精灵中创建一行.所以要获得我正在使用的这些精灵的宽度

tileWidth = (int)tileSet[0].renderer.bounds.size.x;
Run Code Online (Sandbox Code Playgroud)

然后形成我的行

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

但精灵仍然相互重叠,并没有形成一个合适的行.
我在这里做错了什么,我该如何纠正呢?

MBe*_*mam 18

如果您使用的是Unity 5,则必须使用以下代码:

float tileWidth = tileSet[0].GetComponent<SpriteRenderer>().bounds.size.x;
Run Code Online (Sandbox Code Playgroud)

您还必须注意Pixel Per Units值.


小智 15

如果精灵的res是128x128像素.
而这个精灵的Pixels To Units是100.

所以你的tileWidth将是: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;
Run Code Online (Sandbox Code Playgroud)

  • 如果旋转精灵,则可能返回比预期值更大或更小的值. (2认同)