private void Start() { if (!StaticSize) { Width = PlayerPrefs.GetInt("size", Width); Height = PlayerPrefs.GetInt("size", Height); } WallLength = CellSize - 3.0f; Offset = new Vector3(-CellSize * 0.5f, 0.0f, -CellSize * 0.5f); var edges = KruskalMaze.Generate(Width, Height); for (int x = 0; x <= Width; ++x) { for (int z = 0; z <= Height; ++z) { var pillar = Instantiate( Pillar, new Vector3( x * CellSize, 0.5f * WallHeight, z * CellSize ) + Offset, Quaternion.identity); pillar.transform.localScale = new Vector3(1.0f, WallHeight, 1.0f); if ((z == 0 || z == Height) && x != 0) { var wall = SpawnWallBottom(x, z); wall.Passable = false; } if ((x == 0 || x == Width) && z != 0) { var wall = SpawnWallLeft(x, z); wall.Passable = false; } if ( z != 0 && x != Width - 1 && LandmarkProps.Length > 0 && Random.Range(0.0f, 1.0f) < LandmarkChance) { int propIndex = Random.Range(0, LandmarkProps.Length); Instantiate( LandmarkProps[propIndex], new Vector3( pillar.transform.position.x + 1.5f, 0.0f, pillar.transform.position.z - 1.5f), Quaternion.identity); } } } foreach (var pair in edges) { var edge = pair.Key; var passable = pair.Value; MazeWall wall; if (edge.A.X == edge.B.X) { wall = SpawnWallBottom(edge.A.X + 1, edge.A.Y + 1); } else { wall = SpawnWallLeft(edge.A.X + 1, edge.A.Y + 1); } wall.Passable = passable; } var goal = Instantiate( Goal, new Vector3( CellSize * (Width - 1), 1.0f, CellSize * (Height - 1) ), Quaternion.identity); if (HotCold != null) { HotCold.GetComponent <ColdHotOrbit>().Goal = goal; } if (TreasureCamera != null) { TreasureCamera.Follow = goal.transform; TreasureCamera.LookAt = goal.transform; } if (VictoryTimeline != null) { goal.GetComponent <GoalGet>().Timeline = VictoryTimeline; } if (NavMeshSurface != null) { NavMeshSurface.BuildNavMesh(); } }
void Bake() { UnityEngine.AI.NavMeshSurface nav = GetComponent <UnityEngine.AI.NavMeshSurface>(); nav.BuildNavMesh(); }
// Use this for initialization private void Bake() { nav.BuildNavMesh(); }