how to check overlap for dungeon ?
so currently i am trying to build a dungeon generation system . Currently i have set prefabs for each corner and straights. I have the map generating fine and it looks pretty cool. The problem im having is when that i have no detection to detect weather something has been placed in that location so use another prefab. I was thinking of tracking each one placed and then based on that, see what i can place next. i dont really know how to go about it.
length = 30;
GameObject current = GameObject.FindGameObjectWithTag("Start");
int i = 0;
bool first = false;
while (i < length) {
if (first == false)
{
GameObject instance = Instantiate (left_up [0]) as GameObject;
instance.transform.FindChild("spawn1").position = current.transform.FindChild("spawn1").position;
current = instance;
first = true;
}else{
Debug.Log (current);
current = instantiateNext(current);
}
i++;
}
}
GameObject instantiateNext (GameObject lastPrefab){
List<string> placed = new List<string>();
if (lastPrefab.tag == "upright") {
GameObject[][] next = {right_up, horizontal_right ,right_down};
int selected;
GameObject instance = Instantiate (next[selected = Random.Range(0, (int)(next.Length))][Random.Range(0, next[selected].Length)]) as GameObject;
instance.transform.FindChild("spawn1").position = lastPrefab.transform.FindChild("spawn1").FindChild("spawn2").position;
placed.Add(instance.tag);
return(instance);
}
this is just a little bit. but it pretty much duplicates down for each prefab.
I did something like this a little while back. $$anonymous$$y solution was to create prefab hotpots. I had a method which took a hotspot int and passed in a random list. Hotspots were essentially vector3's which were passed into a RNG for that location. In addition, you need to tag your prefabs for their features such as three was halls should be tagged _3way, for example, say we were working on a 10x10 grid where 1,1 is the start room at the top left corner 11 is the room south from there 2 was east. What you would do is instance a prefab at spot (2)'s coordinates while checking spot 1,3,and 12. if those prefabs have only one entrance, and the only open entrance was at 3, then look for a random prefab with tag _1way and automatically rotate it to go to the next room from the previous. Then have a bunch of booleans which are changed to true when the slot is filled. This can easily be contained in a for loop.
Unfortunately I don't have my code anymore or else I would have sent you a sample.
Good luck!