Exemple #1
0
    // Update is called once per frame
    void Update()
    {
        if (Input.GetButtonDown("Fire1") && !MouseOnUI)
        {
            Vector3    VecPoint;
            RaycastHit hit;
            Ray        ray = Camera.ScreenPointToRay(Input.mousePosition);
            if (Physics.Raycast(ray, out hit, Mathf.Infinity))
            {
                VecPoint = hit.point;
                Destroy(Instantiate(ClickMarquer, hit.point, Quaternion.identity), 1);
                if (_selectTile != null)
                {
                    _selectTile.Sprite.GetComponent <SpriteRenderer>().color = Color.green;
                }

                if (TerrainGridTool.TerrainTiles[TerrainGridTool.GetXPos(VecPoint), TerrainGridTool.GetYPos(VecPoint)]
                    .IsWalkable)
                {
                    _selectTile = TerrainGridTool.TerrainTiles[TerrainGridTool.GetXPos(VecPoint),
                                                               TerrainGridTool.GetYPos(VecPoint)];
                    _selectTile.Sprite.GetComponent <SpriteRenderer>().color = Color.blue;
                }
                else
                {
                    _selectTile = null;
                }
            }
        }
    }
 public void Generate()
 {
     TerrainTiles = new GrideTile[width, height];
     for (int x = 0; x < width; x++)
     {
         for (int y = 0; y < height; y++)
         {
             GameObject sprite = Instantiate(NewSpriteTile,
                                             Origin.position + new Vector3(x * CellSize + CellSize / 2, +AltitudeOffset, y * CellSize + CellSize / 2),
                                             Quaternion.Euler(new Vector3(90, 0, 0)), Origin.transform);
             sprite.name = x + "/" + y;
             sprite.GetComponent <SpriteRenderer>().color = new Color(0, 0, 0, 0.2f);
             TerrainTiles[x, y] = new GrideTile(new Vector2Int(x, y), sprite);
         }
     }
 }
 private void CalculTileDiago(GrideTile calculTile)
 {
     calculTile.GCost = Terrain[_calculatedPos.x, _calculatedPos.y].GCost + 10;
     calculTile.HCost = CalculatedDidsanceCost(_calculatedPos, calculTile.Gridposition);
     calculTile.FCost = calculTile.GCost + calculTile.HCost;
 }