Monday, September 24, 2018

Flat Hexgrid in Unity3D

using UnityEngine;

namespace MyGrid.Grids.Examples
{
public class FlatBrickTest : GLMonoBehaviour
{
private readonly Vector2 CellDimensions = new Vector2(360, 180);

public SpriteCell cellPrefab;
public GameObject root;

private FlatHexGrid<SpriteCell> grid;
private IMap3D<FlatHexPoint> map;

public void Start()
{
BuildGrid();
}

public void Update()
{
if (Input.GetMouseButtonDown(0))
{
Vector3 mousePosition = Input.mousePosition;
Vector2 worldPosition = GridBuilderUtils.ScreenToWorld(root, mousePosition);
FlatHexPoint hexPoint = map[worldPosition];

if (grid.Contains(hexPoint))
{
grid[hexPoint].HighlightOn = !grid[hexPoint].HighlightOn;
}
}
}

private void BuildGrid()
{
const int width = 7;
const int height = 9;

grid = FlatHexGrid<SpriteCell>.FatRectangle(width, height);

map = new FlatBrickMap(CellDimensions)
.AnchorCellMiddleCenter()
.WithWindow(ExampleUtils.ScreenRect)
.AlignMiddleCenter(grid)
.To3DXY()
;

foreach (FlatHexPoint point in grid)
{
SpriteCell cell = Instantiate(cellPrefab);
Vector2 worldPoint = map[point];

cell.transform.parent = root.transform;
cell.transform.localScale = Vector3.one;
cell.transform.localPosition = worldPoint;

cell.Color = ExampleUtils.Colors[point.GetColor3_7()];
cell.name = point.ToString();

grid[point] = cell;
}
}
}
}

No comments:

Post a Comment