// Update is called once per frame
    void Update()
    {
        //선택되었는가 아니면 아웃라인 해제
        if (TradeCupcakeTowers.getSelectTower() != this)
        {
            outlineActive(false);
        }


        if (shotTime >= reloadTime)
        {
            //발사 시간 체크
            shotTime = 0;
            //콜라이더 범위 안에 오브젝트가 있는지 체크
            Collider2D[] hitColliders = Physics2D.OverlapCircleAll(transform.position, rangeRadius);

            //하나 이상의 오브젝트가 감지됐는지 체크
            if (hitColliders.Length != 0)
            {
                //가장 가까운 곳에 있는 적을 판별
                float min   = int.MaxValue;
                int   index = -1;
                for (int i = 0; i < hitColliders.Length; i++)
                {
                    if (hitColliders[i].tag == "Enemy")
                    {
                        if (hitColliders[i].GetComponentInParent <PandaController>().health < 0)
                        {
                            continue;
                        }
                        float distance = Vector2.Distance(hitColliders[i].transform.position, transform.position);
                        if (distance < min)
                        {
                            index = i;
                            min   = distance;
                        }
                    }
                }

                if (index == -1)
                {
                    return;
                }

                //타깃으로 방향 설정
                Transform target    = hitColliders[index].transform;
                Vector2   direction = (target.position - transform.position).normalized;

                //발사체 생성
                GameObject projectile = GameObject.Instantiate(projectilePrefab, transform.position, Quaternion.identity) as GameObject;
                projectile.GetComponent <ProjectileScript>().direction = direction;
            }
        }
        shotTime += Time.deltaTime;
    }
Пример #2
0
 void Update()
 {
     if (TradeCupcakeTowers.getSelectTower() == null)
     {
         foreach (Text text in textInfo)
         {
             text.enabled = false;
         }
         return;
     }
     else
     {
         foreach (Text text in textInfo)
         {
             text.enabled = true;
         }
     }
 }
    // Update is called once per frame
    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            mouseSelects = Physics2D.RaycastAll(Camera.main.ScreenToWorldPoint(Input.mousePosition), new Vector3(0, 0, 1));
            Debug.Log(string.Format("Select"));

            if (mouseSelects != null)
            {
                foreach (RaycastHit2D select in mouseSelects)
                {
                    if (select.collider.CompareTag("Tower"))
                    {
                        CupcakeTower selectedTower = select.transform.GetComponent <CupcakeTower>();
                        selectedTower.outlineActive(true);

                        TradeCupcakeTowers.setSelectTower(selectedTower);
                        TowerInfo.UpdateInfo();
                    }
                }
            }
        }
    }
Пример #4
0
    public static void UpdateInfo()
    {
        CupcakeTower     tower      = TradeCupcakeTowers.getSelectTower();
        ProjectileScript projectile = tower.projectilePrefab.GetComponent <ProjectileScript>();

        foreach (Text text in textInfo)
        {
            switch (text.name)
            {
            case "Atk":
                text.text = projectile.damage.ToString();
                break;

            case "Dps":
                text.text = (projectile.damage * 1 / tower.reloadTime).ToString();
                break;

            case "UpgradeCost":
                text.text = tower.upgradingCost.ToString();
                break;
            }
        }
    }
Пример #5
0
 //Function called when the player clicks on the Cupcake Tower
 void OnMouseDown()
 {
     //Assign this tower as the active tower for trading operations
     TradeCupcakeTowers.setActiveTower(this);
 }
Пример #6
0
 // 컵케이크 타워의 업그레이드, 판매 등을 위해서 이 타워가 선택(마우스 클릭)되었을 때 호출되는 함수
 private void OnMouseDown()
 {
     // TradeCupCakeTowers 클래스의 static 함수인 SetActiveTower 호출을 통하여, 역시 static 변수인 현재 선택된 타워를 설정하게 된다
     TradeCupcakeTowers.SetActiveTower(this);
 }