Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
1 capture
12 Jun 22 - 12 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
  • Help Room /
avatar image
0
Question by arisonu123 · Oct 16, 2019 at 06:18 AM · c#algorithmmaze

How to randomly create a tile based maze

I currently have code that opens up all of the doors on my prefabs for rooms/tiles that are not on the edges of my randomly generated map. I would like to modify this code so that not all of the doors are open and it is more of a randomly generated maze. I want every room to be accessible and it is possible to have more than one path through the maze/game world. How can I change my code so it works in this matter? Below is my current code that I want to modify.

 using UnityEngine;
 
 public class Room : MonoBehaviour {
 
     public GameObject doorNorth;
     public GameObject doorSouth;
     public GameObject doorEast;
     public GameObject doorWest;
 }
 
 using UnityEngine;
 using System;
 public class mapGenerator : MonoBehaviour {
     public int rows;
     public int cols;
     public GameObject[] gridPrefabs;
     private float roomWidth = 50.0f;
     private float roomHeight = 50.0f;
     public Room[,] grid;//used to keep track of rooms created ,uses two numbers to refer to it in memory
     public bool isMapOfDay;
     public bool isRandomMap;
     public int chosenSeed;
 
 
     // Use this for initialization
     void Start () {
         chosenSeed = GameManager.instance.mapSeed;
         rows = GameManager.instance.mapRows;
         cols = GameManager.instance.mapColumns;
         isMapOfDay = GameManager.instance.useMapOfDay;
         isRandomMap = GameManager.instance.useRandomMap;
         gridPrefabs = GameManager.instance.mapTiles;
 
     }
 
 
     public GameObject RandomRoomPrefab()//Returns a random room
     {   
         return gridPrefabs [UnityEngine.Random.Range (0, gridPrefabs.Length)];      
     }
     public void GenerateGrid()//used to generate map grid
     {
 
         if (isRandomMap == true && isMapOfDay == false) {//sets map to random map based on time
             UnityEngine.Random.InitState(DateToInt(DateTime.Now));//sets "random" seed to current time
         } else if (isRandomMap == false && isMapOfDay == true) {//sets map to map of day based on numbers in day
             UnityEngine.Random.InitState(DateToInt (DateTime.Now.Date));
         } else {//if both are selected just use random map
             UnityEngine.Random.InitState(DateToInt (DateTime.Now));
         }
         if (chosenSeed != 0) {//if a specific seed is entered in game manager use this instead
             UnityEngine.Random.InitState(chosenSeed);
         }
         //Clear out the grid
         grid = new Room[cols, rows];
         GameManager.instance.mapGrid = grid;
         //For each grid row...
         for (int i=0; i<rows; i++)
         {
             //for each column in that row
             for (int j=0; j<cols; j++) 
             {
                 //Figure out the location
                 float xPosition = roomWidth * j;
                 float zPosition = roomHeight * i;
                 Vector3 newPosition = new Vector3 (xPosition, 0.0f, zPosition);
                 //create a new grid at appropiate location
                 GameObject tempRoomObj = Instantiate (RandomRoomPrefab (), newPosition, Quaternion.identity)as GameObject;
                 //set its parent
                 tempRoomObj.transform.parent = this.transform;
                 //give the temp room a meaningful name
                 tempRoomObj.name = "Room_" + j + "," + i;
                 //Get the room object
                 Room tempRoom = tempRoomObj.GetComponent<Room> ();
                 //open doors as needed
                 if (i == 0) {
                     //open north doors if on bottom row
                     tempRoom.doorNorth.SetActive (false);
                 } else if (i == rows - 1) {
                     //Otherwise, if doors are on the top row open south doors
                     tempRoom.doorSouth.SetActive (false);
                 } else {
                     //otherwise, this row is in the middle so both north and south open
                     tempRoom.doorNorth.SetActive (false);
                     tempRoom.doorSouth.SetActive (false);
                 }
                 if (j == 0) {
                     //if first column then east doors are opened
                     tempRoom.doorEast.SetActive (false);
                 } else if (j == cols - 1) {
                     //Otheriwse, if one last column row open west doors
                     tempRoom.doorWest.SetActive (false);
                 } else {
                     //otherwise, we are in middle so both west and east are opened
                     tempRoom.doorEast.SetActive (false);
                     tempRoom.doorWest.SetActive (false);
                 }
 
                 //save it to the grid array
                 grid [j, i] = tempRoom;//
                 GameManager.instance.mapGrid=grid;
             }
         }
 
     }
     public int DateToInt(DateTime dateToUse)//adds date and time up and returns it as an int
     {
         int dateToReturn = dateToUse.Year + dateToUse.Month + dateToUse.Day + dateToUse.Hour +dateToUse.Minute + dateToUse.Second + dateToUse.Millisecond;
         return dateToReturn;
     }
     public void clear()//clears grid
     {
         for (int c=0; c<GameManager.instance.mapGrid.GetLength(0); c++) {
             for (int r=0; r<GameManager.instance.mapGrid.GetLength(1); r++) {
                 if(GameManager.instance.mapGrid[c,r]!=null)//if not null destroy
                 {
                    Destroy(GameManager.instance.mapGrid[c,r].gameObject);
                 }
 
 
             }
 
         }
     }
 
 }

I believe the change needs to happen in my else statements but I'm not exactly sure how to go about this as I have never made a maze before. Thanks for the help!

Comment
Add comment
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

0 Replies

· Add your reply
  • Sort: 

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

727 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

How to approach my management simulation game? 0 Answers

How do I implement the first touch system just like in Fifa or Pes 0 Answers

Simple `Match 3+ in a row` pattern 0 Answers

Movement following the A* algorithm 0 Answers

Perfect Maze Generator error 0 Answers


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges