예제 #1
0
    private void GetCollider(TowerInstance t)
    {
        float rangeWithBonus = range * (float)t.GetTotalUpgrades(Upgrade.UpgradeType.Range);

        Vector3 center = t.GetPosition() + new Vector3(0, 8f, 0);

        Collider[] hitColliders = Physics.OverlapSphere(center, rangeWithBonus);

        double max = -9999;

        attackCollider = null;
        for (int i = 0; i < hitColliders.Length; i++)
        {
            if (hitColliders[i].tag == "enemy")
            {
                EnemyInstance ei = hitColliders[i].GetComponentInParent <EnemyScript>().enemy;
                if (ei != null)
                {
                    double thisValue = Math.Pow(ei.GetAttackPriority(), 2);
                    if (thisValue > max)
                    {
                        max            = thisValue;
                        attackCollider = hitColliders[i];
                    }
                }
            }
        }
    }
예제 #2
0
    public void Act(TowerInstance t)
    {
        GameObject obj = t.GetGameObject();

        if (obj != null)
        {
            ParticleSystem[] psArray = obj.GetComponentsInChildren <ParticleSystem>();
            if (psArray.Length > 0)
            {
                psArray[0].Emit(15);
            }
        }

        int gainWithUpgrades = (int)Math.Round(gain * t.GetTotalUpgrades(Upgrade.UpgradeType.Gain));

        Game.AddLumber(gainWithUpgrades);
    }
예제 #3
0
    public void Act(TowerInstance t)
    {
        GetCollider(t);

        if (attackCollider != null)
        {
            int damageWithBonus = (int)Math.Round(damage * t.GetTotalUpgrades(Upgrade.UpgradeType.Damage));

            GameObject proj = UnityEngine.Object.Instantiate(projectilePrefab, t.GetGameObject().transform);
            proj.transform.position += new Vector3(0, 8f, 0);
            GameObject bullet;
            if (projectile != null)
            {
                bullet = UnityEngine.Object.Instantiate(projectile, proj.transform);
                proj.GetComponent <ProjectileScript>().bullet = bullet.transform;
            }
            proj.GetComponent <ProjectileScript>().target = attackCollider.transform;
            proj.GetComponent <ProjectileScript>().damage = damageWithBonus;
        }
        else
        {
            t.SetCooldown(0);
        }
    }
예제 #4
0
    public void OnMouseOver()
    {
        if (tower.GetTower() is AttackTower)
        {
            if (attackRenderer != null)
            {
                if (attackRing != null)
                {
                    int range = (int)Math.Round((tower.GetTower() as AttackTower).GetRange() * tower.GetTotalUpgrades(Upgrade.UpgradeType.Range));
                    attackRing.transform.localScale = new Vector3(range, range, range);
                }

                attackRenderer.enabled = true;
            }
        }
        else if (tower.GetTower() is UpgradeTower && upgradeBar == null)
        {
            upgradeBar = Instantiate(upgradeBarPrefab, Game.progressCanvas.transform);
            upgradeBar.GetComponent <ProgressScript>().tower = tower;
        }
    }