示例#1
0
    void Update()
    {
        if (_selectInfra)
        {
            Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;

            if (Physics.Raycast(ray, out hit))
            {
                HexTile tile = hit.collider.GetComponentInParent <HexTile>();

                if (tile)
                {
                    if (_selectTile == tile)
                    {
                        if (Input.GetMouseButtonDown(0))
                        {
                            if (_selectTile.colony[1])
                            {
                                BuildInfra(_selectInfra, _selectTile, 1);
                            }
                            else if (_selectTile.colony[2])
                            {
                                BuildInfra(_selectInfra, _selectTile, 2);
                            }
                            else if (_selectTile.colony[0])
                            {
                                BuildInfra(_selectInfra, _selectTile, 0);
                            }
                        }
                        return;
                    }

                    else if (_selectTile)
                    {
                        _selectTile.RemoveColor(Color.red);
                        _selectTile = null;
                    }

                    if (tile.infra)
                    {
                        return;
                    }
                    for (int i = 0; i < tile.nears.Count; i++)
                    {
                        if (tile.nears[i].infra)
                        {
                            if (tile.nears[i].infra.team == _selectInfra.team)
                            {
                                return;
                            }
                        }
                    }
                    _selectTile = tile;
                    _selectTile.AddColor(Color.red);
                }
            }
        }
    }