Beispiel #1
0
    IEnumerator FireAnimation()
    {
        TowerAnimation.ChangeState(anim, TowerAnimation.STATE_FIRE);
        yield return(null);

        TowerAnimation.ChangeState(anim, TowerAnimation.STATE_IDLE);
    }
Beispiel #2
0
 private new void Awake()
 {
     base.Awake();
     healthBarGO    = healthBar.gameObject;
     sprite         = GetComponent <SpriteRenderer> ();
     towerAnimation = GetComponent <TowerAnimation> ();
 }
Beispiel #3
0
    private void Start()
    {
        animator = GetComponent <TowerAnimation>();

        if (mapper != null)
        {
            RegisterOnBeatCallback(mapper);
        }
    }
Beispiel #4
0
 private void Start()
 {
     Destroy(tower);
     tower      = this;
     center     = transform.GetChild(1).GetChild(0).GetChild(0).GetChild(0).GetChild(0);
     line       = GetComponent <LineRenderer>();
     currentPos = center.position;// + (Camera.main.transform.position-center.position).normalized*distance;
     line.SetPosition(0, currentPos);
     line.SetPosition(1, currentPos);
     towerAnimation = GetComponent <TowerAnimation>();
     towerAnimation.midDropAngle = new Vector3(Random.Range(90.0f, 100.0f), Random.Range(0.0f, 360.0f), 0.0f);
     towerAnimation.topDropAngle = towerAnimation.midDropAngle + new Vector3(Random.Range(-40.0f, 10.0f), Random.Range(-45.0f, 45.0f), Random.Range(-180.0f, 180.0f));
     GeneralGameMenager.instance.QuitingSummary.AddListener(Respawn);
 }
Beispiel #5
0
    IEnumerator Retract()
    {
        isRetracting = true;

        TowerAnimation.ChangeState(anim, TowerAnimation.STATE_FOLD);
        if (!TowerAnimation.IsFolding(anim))
        {
            yield return(new WaitUntil(() => TowerAnimation.IsFolding(anim)));
        }
        yield return(new WaitUntil(() => !TowerAnimation.IsFolding(anim)));

        TowerAnimation.ChangeState(anim, TowerAnimation.STATE_IDLE);

        isRetracting = false;
    }
Beispiel #6
0
    IEnumerator Deploy()
    {
        isDeploying = true;

        TowerAnimation.ChangeState(anim, TowerAnimation.STATE_UNFOLD);
        if (!TowerAnimation.IsUnfolding(anim))
        {
            yield return(new WaitUntil(() => TowerAnimation.IsUnfolding(anim)));
        }
        yield return(new WaitUntil(() => !TowerAnimation.IsUnfolding(anim)));

        TowerAnimation.ChangeState(anim, TowerAnimation.STATE_IDLE);

        isDeploying = false;
    }
    public virtual void Start()
    {
        towerController = GetComponent<TowerController>();
        towerAnimation = GetComponentInChildren<TowerAnimation>();

        elaspedTime = towerController.attribute.SpawnShoot + 1;
        enemyArray = new ArrayList();
        SphereCollider collider = (SphereCollider)gameObject.collider;
        collider.radius = towerController.attribute.Range;
        isShooting = false;
        isActivity = false;
        isUpdateStart = false;
        hasEnemy = false;
        positionAnimation = towerAnimation.transform.localPosition;
        StartCoroutine(building());
    }
Beispiel #8
0
    public virtual void Start()
    {
        towerController = GetComponent <TowerController>();
        towerAnimation  = GetComponentInChildren <TowerAnimation>();

        elaspedTime = towerController.attribute.SpawnShoot + 1;
        enemyArray  = new ArrayList();
        SphereCollider collider = (SphereCollider)gameObject.collider;

        collider.radius   = towerController.attribute.Range;
        isShooting        = false;
        isActivity        = false;
        isUpdateStart     = false;
        hasEnemy          = false;
        positionAnimation = towerAnimation.transform.localPosition;
        StartCoroutine(building());
    }
Beispiel #9
0
    void EngageTarget(GameObject target)
    {
        TowerAnimation.ChangeState(anim, TowerAnimation.STATE_FIRE);
        fireFXScript.StartFiring(towerType);
        //For damage fx
        Vector3 direction = target.transform.position - activeMuzzle.position;

        fireFXScript.MoveDamageFX(target.transform.position - direction.normalized * 0.1f + Vector3.up * 0.2f);
        fireFXScript.OrientDamageFX(activeMuzzle.position);
        fireFXScript.StartDamageFX(towerType);

        if (Time.time > fireTime + fireRate)
        {
            fireTime = Time.time;
            //Apply damage to enemy
            Enemy E         = target.GetComponent <Enemy>();
            int   killValue = E.TakeDamage(damage, towerType);
            if (killValue > 0)              //Enemy was killed
            {
                PlayerStats.money += killValue;
                gc.SpawnKillFX(E.ID, target.transform.position);
            }
        }
    }
Beispiel #10
0
 private new void Awake()
 {
     base.Awake();
     sprite         = GetComponent <SpriteRenderer> ();
     towerAnimation = GetComponent <TowerAnimation> ();
 }
 private void Awake()
 {
     Instance = this;
 }
Beispiel #12
0
    void Update()
    {
        if (!towerIsActive)
        {
            fireFXScript.StopFiring(towerType);
            fireFXScript.StopDamageFX(towerType);
            return;
        }

        //Default to the idle state; override later if firing
        TowerAnimation.ChangeState(anim, TowerAnimation.STATE_IDLE);

        if (nearbyEnemies.Count == 0)
        {
            fireFXScript.StopFiring(towerType);
            fireFXScript.StopDamageFX(towerType);
            return;
        }

        //1. Acquire - Handled by collider entry and exit

        //2. Select - Pick the nearest enemy by default (for now)
        GameObject target = null;

        {
            //Search for nearest target or keep the same target if we already found one
            float minDist       = Mathf.Infinity;
            bool  nullFoundFlag = false;
            foreach (GameObject obj in nearbyEnemies)
            {
                if (obj == null)
                {
                    nullFoundFlag = true;
                    continue;
                }

                if (targetLastFrame != null)
                {
                    if (targetLastFrame == obj)                       //old target is still in range so maintain it
                    {
                        target = targetLastFrame;
                        break;
                    }
                }

                float currdist = Vector3.SqrMagnitude(obj.transform.position - transform.position);
                if (currdist < minDist)
                {
                    target  = obj;
                    minDist = currdist;
                }
            }
            if (nullFoundFlag)
            {
                nearbyEnemies.Remove(null);
            }
        }

        targetLastFrame = target;

        //3. Engage
        if (target == null)
        {
            fireFXScript.StopFiring(towerType);
            fireFXScript.StopDamageFX(towerType);
        }
        else
        {
            if (TurnTowardsTarget(target.transform.position))             //returns true when facing enemy
            {
                EngageTarget(target);
            }
            else
            {
                fireFXScript.StopDamageFX(towerType);
            }
        }
    }