Beispiel #1
0
    /// <summary>
    /// Очистить цели у себя и врагов
    /// </summary>
    public void ClearTarget()
    {
        target      = null;
        meleeTarget = null;
        WarUnit warUnit  = this as WarUnit;
        var     allUnits = meleeUnits.Concat(rangeUnits);

        Unit[] enemies = new Unit[0];
        if (warUnit != null)
        {
            WarTower warTower = warUnit.tower;
            var      warriors = warTower.warriors;
            enemies = allUnits.Where(u => warriors.Contains(u.target) || warriors.Contains(u.meleeTarget)).ToArray();
        }
        else
        {
            enemies = allUnits.Where(u => u.target == this || u.meleeTarget == this).ToArray();
        }

        if (enemies.Length == 0)
        {
            return;
        }

        foreach (var enemy in enemies)
        {
            enemy.target      = null;
            enemy.meleeTarget = null;
        }
    }
Beispiel #2
0
    /// <summary>
    /// Действие с вышкой воинов
    /// </summary>
    /// <param name="warTower">Вышка воинов</param>
    void ActionWithWarTower(WarTower warTower)
    {
        MoveArea moveArea = warTower.moveArea;

        for (int i = 0; i < hits3D.Length; i++)
        {
            RaycastHit hit          = hits3D[i];
            Transform  hitTransform = hit.transform;
            if (hitTransform == null)
            {
                continue;
            }

            MoveArea hitMoveArea = hitTransform.GetComponent <MoveArea>();
            if (hitMoveArea == null)
            {
                continue;
            }

            if (hitMoveArea == moveArea)
            {
                Vector3 point = hit.point;
                warTower.SetPlacePoint(point);
                break;
            }
        }
        levelManager.SelectedObject = null;
    }
    public void SellTower()
    {
        tower.buildPlace.gameObject.SetActive(true);
        tower.buildPlace.ShowHideMeshs(false);
        tower.ownTransform.gameObject.SetActive(false);

        WarTower warTower = tower as WarTower;

        if (warTower != null)
        {
            var warriors = warTower.warriors;
            foreach (var warrior in warriors)
            {
                warrior.isActive = false;
                warrior.ClearTarget();
            }
        }

        int priceToReturn = tower.priceToReturn;

        levelManager.AddGold(priceToReturn);
        levelManager.SelectedObject = null;
    }