So, i'm making this Hexmap for a school assignment i'm working on, but suddenly when i was trying to test if it worked, the "highlight" of the cells seems all jumbled up, instead of highlighting the cell i'm clicking on it highlights another cell in the grid and i can't understand why, and sometimes it gives me an error in certain parts of the grid. I'm sure i did all accordingly to the tutorial i was following : https://catlikecoding.com/unity/tutorials/hex-map/part-1/
---
The canvas is set right, and i'm positive i did the other things word to word :( what am i missing? i need to deliver this assignment in a few days, so any help is appreciated, really!
Errors :![alt text][1]
![alt text][2]
[1]: /storage/temp/140109-hexmaperror.png
[2]: /storage/temp/140110-hexmaperror2.png
EDIT : I'm attaching the script on which I THINK i did something wrong :
using UnityEngine;
[System.Serializable]
public struct HexCoordinates
{
[SerializeField]
private int x, z;
public int X
{
get
{
return x;
}
}
public int Z
{
get
{
return z;
}
}
public int Y
{
get
{
return -X - Z;
}
}
public HexCoordinates (int x, int z)
{
this.x = x;
this.z = z;
}
public static HexCoordinates FromPosition (Vector3 position)
{
float x = position.x / (HexMetrics.innerRadius * 2f);
float y = -x;
float offset = position.z / (HexMetrics.outerRadius * 3f);
x -= offset;
y -= offset;
int iX = Mathf.RoundToInt(x);
int iY = Mathf.RoundToInt(y);
int iZ = Mathf.RoundToInt(-x - y);
if (iX + iY + iZ != 0)
{
float dX = Mathf.Abs(x - iX);
float dY = Mathf.Abs(y - iY);
float dZ = Mathf.Abs(-x - y - iZ);
if (dX > dY && dX > dZ)
{
iX = -iY - iZ;
}
else if (dZ > dY)
{
iZ = -iX - iY;
}
//Debug.LogWarning("rounding error!");
}
return new HexCoordinates(iX, iZ);
}
public static HexCoordinates FromOffsetCoordinates (int x, int z)
{
return new HexCoordinates(x - z / 2, z);
}
public override string ToString()
{
return "(" + X.ToString() + ", " + Y.ToString() + ", " + Z.ToString() + ")";
}
public string ToStringOnSeparateLines ()
{
return X.ToString() + "\n" + Y.ToString() + "\n" + Z.ToString();
}
}
↧