Hello everyone,
For a small project of mine, I generate a hex map. It kinda works, however the position data (transform.position) is screwed up for some reason - check out this picture:
I generate the Hexes at runtime, and I guess something with the following code is wrong and/or missing. This function creates a single hexagon:
function Hex (origin : Vector3, sideLength : float) : GameObject {
var vert1 : Vector3;
var vert2 : Vector3;
var vert3 : Vector3;
var vert4 : Vector3;
var vert5 : Vector3;
var vert6 : Vector3;
var a : Vector3;
var b : Vector3;
var c : Vector3;
a = Vector3.right*(0.5*sideLength);
b = Vector3.forward*(0.866*sideLength);
c = Vector3.right*sideLength;
vert1 = origin;
vert2 = vert1 + a + b;
vert3 = vert2 + c;
vert4 = vert3 + a - b;
vert5 = vert4 - a - b;
vert6 = vert5 - c;
var newHex : GameObject = new GameObject();
var newMesh : Mesh = new Mesh();
newHex.AddComponent(MeshFilter);
newHex.AddComponent(MeshRenderer);
newMesh.vertices = [vert1, vert2, vert3, vert4, vert5, vert6];
newMesh.RecalculateBounds();
var uvs = new Vector2[newMesh.vertices.length];
uvs = [Vector2(0.0, 0.5),
Vector2(0.25, 0.0),
Vector2(0.75, 0.0),
Vector2(1.0, 0.5),
Vector2(0.25, 1.0),
Vector2(0.75, 1.0)];
newMesh.uv = uvs;
newMesh.triangles = [5, 0, 1, 5, 1, 4, 2, 4, 1, 2, 3, 4];
newMesh.RecalculateNormals();
newHex.GetComponent(MeshFilter).mesh = newMesh;
newHex.transform.parent = transform;
newHex.AddComponent("MeshCollider");
newHex.AddComponent("hex"); // custom script
newHex.tag = "hex";
return newHex;
}
Any idea what’s wrong with that?