开放世界2d游戏统一的背景问题

时间:2018-11-04 17:13:30

标签: c# android unity3d background

image screen shot

我的播放器可以在x轴和y轴上自由行走,起初,我使用此代码将播放器从另一侧越过边界带回后台,但随后我不得不为其他播放器进行很多新的计算场景中的物体,例如硬币和敌人,以纠正其位置

    private void MapControl()
    {
        if (transform.position.y > MapSize)
        {
            transform.position = new Vector3(transform.position.x, 0);
        }
        else if (transform.position.y < 0)
        {
            transform.position = new Vector3(transform.position.x, MapSize);
        }
        else  if (transform.position.x > MapSize)
        {
            transform.position = new Vector3(0, transform.position.y);
        }
        else if (transform.position.x < 0)
        {
            transform.position = new Vector3(MapSize, transform.position.y);
        }
    }

我想知道哪个更好?将我的背景复制到播放器所在的位置(x和y轴),如何复制?还是使用上述代码将播放器保留在主要背景中?

1 个答案:

答案 0 :(得分:1)

单击camera。在检查器中,您可以将其设置为图像背景,然后设置图像,它将永久保留在视图中。

或者,您可以将背景添加为精灵图像,对其进行缩放以适合您的相机视图,然后使其成为相机的子级。请务必注意,如果您决定这样做,请确保将background移到后台。即调整其z(深度)

这两种解决方案都可以使用,并且为您提供静态背景(无论如何,背景都将保持静止状态)

但是,如果您希望背景随着玩家的移动而移动,则需要平铺纹理,这里有一些用于编程tileable背景的教程。

类似(伪)的东西

int tileswide=10;
int tileswide=10;
float tilewidth=Screen.width;
float tileheight=Screen.height;


for(int x =0; x<tileswide;x++){

   for(int y =0; y<tileswide;y++){

       instantiate(object);
       Vector3 pos = new Vector3(x*tilewidth,y*tileheight,3);
       object.transform.position=pos;

   }

}