我正在开发的游戏有侧滚动背景。我有很多背景精灵 当第一个背景图像从屏幕边界退出时,我添加了另一个背景。 当我添加新背景时,我只需检查背景精灵的宽度,并在当前背景之后实例化(移动时),但它在背景图像之间显示细微的线条。
renderer = mapObject.GetComponent<SpriteRenderer>();
mapWidth = renderer.bounds.size.x;
//instantiate new map to new position
addMap(newMap,new Vector3(mapWidth,0f,0f));
是否会出现此问题,因为我在移动时实例化了新的精灵 目前的一个?或任何解决这个问题的想法?
答案 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);
}
}