Ejemplo n.º 1
0
        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());
        }
Ejemplo n.º 2
0
        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));
        }