Esempio n. 1
0
    private void CreateNewTower(TowerCube baseWaypoint)
    {
        Tower newTower = Instantiate(towerPrefab, baseWaypoint.transform.position, Quaternion.identity);

        newTower.transform.parent = parentTransform;
        baseWaypoint.isBuilt      = true;
        newTower.baseWaypoint     = baseWaypoint;
        towerQueue.Enqueue(newTower);
    }
Esempio n. 2
0
    private void MoveExistingTower(TowerCube newBaseWaypoint)
    {
        Tower tower = towerQueue.Dequeue();

        tower.baseWaypoint.isBuilt = false;

        tower.transform.position = newBaseWaypoint.transform.position;
        newBaseWaypoint.isBuilt  = true;
        tower.baseWaypoint       = newBaseWaypoint;

        towerQueue.Enqueue(tower);
    }
Esempio n. 3
0
 private void Update()
 {
     //检测鼠标按下
     if (Input.GetMouseButtonDown(0))
     {
         //检测鼠标点击位置(按在UI的时候不做建造处理)
         if (EventSystem.current.IsPointerOverGameObject() == false)
         {
             //鼠标点转化为射线进行检测
             Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
             RaycastHit hit;
             //最大检测距离1000
             bool isCollider = Physics.Raycast(ray, out hit, 1000, LayerMask.GetMask("TowerCube"));
             if (isCollider)
             {
                 //得到点击的cube
                 TowerCube cube = hit.collider.GetComponent <TowerCube>();
                 if (selectedTower != null && cube.TowerCubeOn == null)
                 {
                     if (money >= selectedTower.cost)
                     {
                         //建塔
                         MoneyUpdate(selectedTower.cost);
                         moneyreduce.SetTrigger("test");
                         cube.BuildTower(selectedTower);
                     }
                     else
                     {
                         //钱不够
                         moneyreduce.SetTrigger("nomoney");
                     }
                 }
                 //有炮塔   做升级或拆迁处理
                 else if (cube.TowerCubeOn != null)
                 {
                     //是否选中同一炮塔并且画布是否被使用
                     if (cube == SelectedTowerObject && UpgradeCanves.activeInHierarchy)
                     {
                         HideUpgradeUI();
                     }
                     else
                     {
                         ShowUpgradeUI(cube.transform.position, cube.isUpgrade);
                     }
                     SelectedTowerObject = cube;
                 }
             }
         }
     }
 }
Esempio n. 4
0
    public void AddTower(TowerCube baseWaypoint)
    {
        if (baseWaypoint.isBuilt)
        {
            return;
        }

        int placedTowers = towerQueue.Count;

        if (placedTowers < towerLimit)
        {
            CreateNewTower(baseWaypoint);
        }
        else
        {
            MoveExistingTower(baseWaypoint);
        }
    }