移动镜头时在镜头前产生预制物

时间:2019-01-05 17:21:05

标签: c# arrays unity3d matrix procedural

在Unity中,我尝试制作一个地面,它是矩阵的形式,随着我的播放器和摄像机在场景中的移动而逐步生成。想象一下,每当玩家距离末尾足够近时,矩阵都会添加新行。

我已经有了玩家运行的基础。地面由大小相等的不同方形预制件制成。我正在使用此代码从GameObject数组中随机选择一个预制件,并从中构建一个矩阵来代表我的立场。现在,我正在运行时生成整个地面,但是我想做到这一点,以便随着玩家的进步,它在矩阵中无限生成新行。 我尝试将距离变量与实例化转换位置相乘,使其看起来像这样:

  

GameObject theTile =实例化(thePrefab,transform + transform.forward * distanceAhead);

我还尝试设置一个名为SpawnPoint的空GameObject作为Camera的子代,它随Camera和我的LevelInstancing一起移动一点,并且如果与SpawnPoint相交,则应该在其中生成另一行预制件矩阵,代码看起来像这样:

void CreateMap()
  {
      for (int row = 1; row <= myGrid.y; row++)
      {
          for (int col = 1; col <= myGrid.x; col++)
          {
              if(transform.position.z < spawnPoint.transform.position.z)
              {
                  transform.position = new Vector3(transform.position.x, transform.position.y, transform.position.z + distance);
                  int n = Random.Range(0, prefabTiles.Length);
                  GameObject thePrefab = prefabTiles[n];

                  GameObject theTile = Instantiate(thePrefab, transform);
                  theTile.name = "Tile_" + col + "_" + row;
                  theTile.transform.localPosition = new Vector3((col - 1) * tileDimensions.x, 0, (row - 1) * tileDimensions.z);

                  mapList.Add(theTile);
              }
          }
      }
  }

但是它不能正常工作。

这是我现在正在使用的工作代码。

void Start()
 {
     CreateMap();
 }

 void CreateMap()
 {
     for (int row = 1; row <= myGrid.y; row++)
     {
         for (int col = 1; col <= myGrid.x; col++)
         {
             int n = Random.Range(0, prefabTiles.Length);
             GameObject thePrefab = prefabTiles[n];

             GameObject theTile = Instantiate(thePrefab, transform);
             theTile.name = "Tile_" + col + "_" + row;
             theTile.transform.localPosition = new Vector3((col - 1) * tileDimensions.x, 0, (row - 1) * tileDimensions.z);

             mapList.Add(theTile);
         }
     }
 }

0 个答案:

没有答案