精灵之间的精灵2d空间

时间:2015-07-17 07:15:46

标签: unity3d

我正在开发的游戏有侧滚动背景。我有很多背景精灵 当第一个背景图像从屏幕边界退出时,我添加了另一个背景。 当我添加新背景时,我只需检查背景精灵的宽度,并在当前背景之后实例化(移动时),但它在背景图像之间显示细微的线条。

renderer = mapObject.GetComponent<SpriteRenderer>();
mapWidth = renderer.bounds.size.x;

//instantiate new map to new position
addMap(newMap,new Vector3(mapWidth,0f,0f));

是否会出现此问题,因为我在移动时实例化了新的精灵 目前的一个?或任何解决这个问题的想法?

1 个答案:

答案 0 :(得分:0)

也许你的精灵比例不是(1,1,1)

你可以试试这个

GetComponent<Renderer>().bounds.size.x

我之前使用编辑器完成了这项工作,以便对精灵进行单元化。

这是我的代码

public void SortMaps() {
    float sceenHeight = Camera.main.orthographicSize * 2;
    float aspectRatio = 760f / 660f;
    float sceenWidth = sceenHeight * aspectRatio;
    float proportion = sceenWidth / mapBgs.transform.GetChild (0).GetComponent<SpriteRenderer>().sprite.bounds.size.x;
    //In my method the sprite's width should equal to the sceen's width, so the first sprite's position should be -(sceenHeight / 2 - sceenWidth / 2)
    float initY = -(sceenHeight / 2 - sceenWidth / 2);

    //First sprite
    mapBgs.transform.GetChild (0).name = "MapBg01";
    mapBgs.transform.GetChild (0).transform.position = new Vector3 (0, initY, 0);
    mapBgs.transform.GetChild (0).transform.localScale = new Vector3(proportion, proportion, 0);
    for (int i = 1; i < mapBgs.transform.childCount; i++)
    {
        mapBgs.transform.GetChild(i).name = "MapBg" + (i + 1).ToString ().PadLeft (2, '0');
        //change the scale to make the sprite adapt to the sceen
        mapBgs.transform.GetChild(i).transform.localScale = new Vector3(proportion, proportion, 0);
        //Next sprite's position 
        float y = mapBgs.transform.GetChild(i - 1).transform.position.y +
            mapBgs.transform.GetChild(i - 1).gameObject.GetComponent<Renderer>().bounds.size.y / 2 +
                mapBgs.transform.GetChild(i).gameObject.GetComponent<Renderer>().bounds.size.y / 2;
        mapBgs.transform.GetChild(i).transform.position = new Vector3 (0, y, 0);
    }
}