public static HexCoordinates PixelToHex(this HexPoint point, float size) { var x = Sqrt3 / 3 * point.x / size - 1f / 3 * point.z / size; var z = 2f / 3 * point.z / size; var y = -x - z; var fHex = new FractionalHex(x, z, y); return(fHex.HexRound()); }
public static HexCoordinates HexRound(this FractionalHex fhex) { var x = Mathf.RoundToInt(fhex.x); var y = Mathf.RoundToInt(fhex.y); var z = Mathf.RoundToInt(fhex.z); var difX = Mathf.Abs(fhex.x - x); var difY = Mathf.Abs(fhex.y - y); var difZ = Mathf.Abs(fhex.z - z); if (difX > difY && difX > difZ) { x = -y - z; } else if (difZ > difY) { z = -x - y; } return(new HexCoordinates(x, z)); }