Help instantiating Hex Map
Hello,
So I'm a bit new to C# and, while I am learning a ton through various resources, I can't seem to understand the method behind instantiating a Hexagonal-shaped map using hexagon tiles.
I'm hoping to create a "circular" shape as a basis for a map made of hexagons centered around tile 0,0 but have only been able to find resources showing rectangular generations.
I have found code from a programmer having a similar issue, and while I could just use their tool to generate my desired map shape, I'd like to get a grasp on how the process is done so that I can "trim the fat" (their tool provides multiple different possible designs) and make it easier to adjust manually in the future. Any help is greatly appreciated!
This is the section of code I was able to find (full code here):
private void GenHexShape() {
Debug.Log ("Generating hexagonal shaped grid...");
Tile tile;
Vector3 pos = Vector3.zero;
int mapSize = Mathf.Max(mapWidth, mapHeight);
for (int q = -mapSize; q <= mapSize; q++){
int r1 = Mathf.Max(-mapSize, -q-mapSize);
int r2 = Mathf.Min(mapSize, -q+mapSize);
for(int r = r1; r <= r2; r++){
switch(hexOrientation){
case HexOrientation.Flat:
pos.x = hexRadius * 3.0f/2.0f * q;
pos.z = hexRadius * Mathf.Sqrt(3.0f) * (r + q/2.0f);
break;
case HexOrientation.Pointy:
pos.x = hexRadius * Mathf.Sqrt(3.0f) * (q + r/2.0f);
pos.z = hexRadius * 3.0f/2.0f * r;
break;
}
tile = CreateHexGO(pos,("Hex[" + q + "," + r + "," + (-q-r).ToString() + "]"));
tile.index = new CubeIndex(q,r,-q-r);
grid.Add(tile.index.ToString(), tile);
}
}
}