public void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            var mousePos       = Camera.main.ScreenToWorldPoint(Input.mousePosition);
            var position       = new Vector2(Mathf.Floor(mousePos.x) + 0.5f, Mathf.Floor(mousePos.y) + 0.5f);
            var possibleTowers = Physics2D.OverlapCircleAll(position, 0.3f, 256);

            GameObject tower = null;

            foreach (var hit in possibleTowers)
            {
                if (hit.transform.position.x == position.x && hit.transform.position.y == position.y)
                {
                    tower = hit.transform.gameObject;
                }
            }

            //RaycastHit2D hit = Physics2D.Raycast(new Vector2(Camera.ScreenToWorldPoint(Input.mousePosition).x, Camera.ScreenToWorldPoint(Input.mousePosition).y), -Vector2.up, 0f, LayerMask.GetMask("Towers"));
            if (tower != null)
            {
                myTower = tower.GetComponent <GenericTower>();

                if (myTower.IsFireMode == true)
                {
                    myUpgradeMenu.SetActive(true);
                }
            }
        }
    }
예제 #2
0
    public void UpgradeTower()
    {
        this.TowerLevel++;
        Vector2 towerPosition = this.transform.position;

        if (TowerLevel < 4)
        {
            GameObject   upgradedTower   = Resources.Load("Towers/" + this.TowerType + "TowerL" + this.TowerLevel) as GameObject;
            GenericTower myUpgradedTower = Instantiate(upgradedTower, towerPosition, Quaternion.Euler(0, 0, 0)).GetComponent <GenericTower>();
            myUpgradedTower.SpawnPoint = SpawnPoint;
            myUpgradedTower.transform.SetParent(this.transform.parent);
            Destroy(myProjectile);
            Destroy(this.gameObject);
        }
    }
예제 #3
0
    public void PlaceTowerClick(int towerType)
    {
        if (GameLogic.money >= GameLogic.buildCost)
        {
            string towerResource;
            GenericTower.TowerTypeEnum myTowerType = (GenericTower.TowerTypeEnum)towerType;

            switch (myTowerType)
            {
            case GenericTower.TowerTypeEnum.Fire:
                towerResource = "FireTower";
                break;

            case GenericTower.TowerTypeEnum.Ice:
                towerResource = "IceTower";
                break;

            case GenericTower.TowerTypeEnum.Rock:
                towerResource = "RockTower";
                break;

            case GenericTower.TowerTypeEnum.Lightning:
                towerResource = "LightningTower";
                break;

            default:
                throw new Exception("Unknown Tower Type:" + towerType);
            }

            GameObject prefab   = Resources.Load <GameObject>("Towers/" + towerResource) as GameObject;
            GameObject newTower = Instantiate(prefab);

            var towers = GameObject.Find("Towers");
            newTower.transform.SetParent(towers.transform);

            GenericTower newGenericTower = newTower.GetComponent <GenericTower>();
            newGenericTower.Initizalize(myTowerType);

            GameLogic.money -= GameLogic.buildCost;
        }
    }
예제 #4
0
    // Update is called once per frame
    void Update()
    {
        // Place a tower?
        if (Input.GetKeyDown("q") && resources > towerResourceCost)
        {
            Transform    tower      = (Transform)Instantiate(towerTemplate, spawnLocation.position, Quaternion.identity);
            GenericTower controller = tower.GetComponent <GenericTower>();
            controller.attackRange      = attackRange;
            controller.bulletSpeed      = bulletSpeed;
            controller.bulletDamage     = bulletDamage;
            controller.bulletForce      = bulletForce;
            controller.attacksPerSecond = attacksPerSecond;
            controller.ammunition       = ammunition;

            resources -= towerResourceCost;
        }

        if (overlay != null)
        {
            overlay.resources = resources;
        }
    }
예제 #5
0
 private void Update()
 {
     myTower = this.gameObject.GetComponentInParent <UpgradeTowerMenu>().myTower;
 }