GameObject GenerateQuad(TileInds tile) { Vector3[] vertices = new Vector3[kNumQuadSideVertices * 2]; Vector2[] uvs = new Vector2[kNumQuadSideVertices * 2]; int[] triangles = new int[(kNumQuadSideVertices - 1) * 6]; Vector3[] normals = new Vector3[kNumQuadSideVertices * 2]; Vector4[] tangents = new Vector4[kNumQuadSideVertices * 2]; GenerateQuadVertices(tile.X, tile.Y, vertices, uvs, triangles, normals, tangents); GameObject newQuad = (GameObject) GameObject.Instantiate(meshPrefab); Mesh mesh = new Mesh(); mesh.vertices = vertices; mesh.uv = uvs; mesh.triangles = triangles; mesh.normals = normals; mesh.tangents = tangents; mesh.RecalculateBounds(); newQuad.GetComponent<MeshFilter>().mesh = mesh; newQuad.renderer.material = snowMaterial; // Create a new mesh for the mesh collider newQuad.GetComponent<MeshCollider>().sharedMesh = mesh; Vector3 position = new Vector3(tile.X * 100, 0, tile.Y * 100); newQuad.transform.position = position; return newQuad; }
Terrain GenerateQuad(TileInds tile) { float tileSizeX = terrainPrefab.terrainData.size.x; float tileSizeZ = terrainPrefab.terrainData.size.z; Terrain newQuad = (Terrain)GameObject.Instantiate (terrainPrefab); Vector3 position = new Vector3 (tile.X * tileSizeX, 0, tile.Y * tileSizeZ); GenerateHeights (newQuad, tile.X * terrainPrefab.terrainData.heightmapWidth, tile.Y * terrainPrefab.terrainData.heightmapHeight, 10, 10); newQuad.transform.position = position; return newQuad; }
void addObstacles(TileInds tile) { // Instantiate several rocks. Vector3 position = new Vector3 (tile.X * 100, 0, tile.Y * 100); for (int i = 0; i < Random.Range(1,10); i++) { GameObject newRock = (GameObject)GameObject.Instantiate (rock); float x = tile.X * 100 + Random.Range (0, 100); float z = tile.Y * 100 + Random.Range (0, 100); newRock.transform.position = (new Vector3 (x, HeightForXZ (x, z), z)); } // Instance several trees. for (int i = 0; i < Random.Range(1,10); i++) { GameObject newTree = (GameObject)GameObject.Instantiate (tree); float x = tile.X * 100 + Random.Range (0, 100); float z = tile.Y * 100 + Random.Range (0, 100); newTree.transform.position = (new Vector3 (x, HeightForXZ (x, z), z)); } }