Exemple #1
0
    protected virtual IEnumerator Shoot()
    {
        while (true)
        {
            yield return(_sync());

            Alien closestEnemy;
            if ((closestEnemy = EnemyInRange()) != null)
            {
                GameObject newProj;
                if (GameSession.Instance.isNetworkGame)
                {
                    newProj = (GameObject)Network.Instantiate(Bullet, BarrelTip, Quaternion.identity, 0);
                    TowerWrapper tower = transform.parent.GetComponent <TowerWrapper>();
                    tower.mirrorShootAction();
                }
                else
                {
                    newProj = (GameObject)GameObject.Instantiate(Bullet, BarrelTip, Quaternion.identity);
                    handleShootAnimationSound();
                }
                ProjectileInit(newProj, closestEnemy);
                yield return(new WaitForSeconds((float)RateOfFire));
            }
        }
    }
Exemple #2
0
    // Update is called once per frame
    void FixedUpdate()
    {
        if (toInitialize)
        {
            toInitialize = false;
            swapTowerSkin();
        }
        Alien closestEnemy;

        if (GameSession.Instance.isDefender)
        {
            if ((closestEnemy = EnemyInRange()) != null)
            {
                Vector3 lookDir = closestEnemy.transform.position - transform.position;
                lookDir -= new Vector3(0, lookDir.y, 0);
                Quaternion targetRotation = Quaternion.LookRotation(lookDir);
                transform.parent.rotation = Quaternion.RotateTowards(transform.parent.rotation, targetRotation, Time.deltaTime * rotationSpeed);
            }
        }
        else if (GameSession.Instance.isNetworkGame)
        {
            TowerWrapper tower = transform.parent.GetComponent <TowerWrapper>();
            if (tower != null && tower.targetView != NetworkViewID.unassigned)
            {
                NetworkView view = NetworkView.Find(tower.targetView);
                if (view == null)                 // enemy has dieded
                {
                    return;
                }
                closestEnemy = (Alien)view.GetComponent <Alien>();
                Vector3 lookDir = closestEnemy.transform.position - transform.position;
                lookDir -= new Vector3(0, lookDir.y, 0);
                Quaternion targetRotation = Quaternion.LookRotation(lookDir);
                transform.parent.rotation = Quaternion.RotateTowards(transform.parent.rotation, targetRotation, Time.deltaTime * rotationSpeed);
            }
            if (tower != null && Level != tower.Level)
            {
                Level = tower.Level;
                swapTowerSkin();
            }
        }
    }