Exemple #1
0
    private void OnTriggerEnter(Collider other)
    {
        if (!PhotonNetwork.isMasterClient)
        {
            return;
        }

        int tp = 6;

        if (other.name.Contains(enemyColor) && other.tag.Equals("Minion"))
        {
            AddEnemiesList(other);
            tp = 3;
        }
        else if (other.gameObject.layer.Equals(LayerMask.NameToLayer("Champion")))
        {
            if (other.GetComponent <ChampionBehavior>().Team.Equals(enemyColor))
            {
                AddEnemiesList(other);
                tp = 5;
            }
        }
        else if (other.tag.Equals("Tower"))
        {
            TowerBehaviour t = other.GetComponent <TowerBehaviour>();
            if (t.isCanAtkMe)
            {
                if (t.Team.Equals(enemyColor))
                {
                    AddEnemiesList(other);
                    tp = 4;
                }
            }
        }
        else if (other.tag.Equals("Suppressor") || other.tag.Equals("Nexus"))
        {
            SuppressorBehaviour s = other.GetComponent <SuppressorBehaviour>();
            if (s.isCanAtkMe)
            {
                if (s.Team.Equals(enemyColor))
                {
                    AddEnemiesList(other);
                    tp = 4;
                }
            }
        }
        if (tp < targetPriority)
        {
            TargetSearch();
        }
    }
Exemple #2
0
    private void OnEnable()
    {
        myteam     = PhotonNetwork.player.GetTeam().ToString().ToLower();
        Icon       = GetComponent <SpriteRenderer>();
        MinionRed  = Resources.Load <Sprite>("Minimap/MIcon_Red_Minion");
        MinionBlue = Resources.Load <Sprite>("Minimap/MIcon_Blue_Minion") as Sprite;
        TowerRed   = Resources.Load <Sprite>("Minimap/MIcon_Red_Tower") as Sprite;
        TowerBlue  = Resources.Load <Sprite>("Minimap/MIcon_Blue_Tower") as Sprite;

        if (transform.parent.name.Contains("Minion"))
        {
            MBehavior = transform.parent.GetComponent <MinionBehavior>();
            if (myteam.Equals(MBehavior.team.ToString().ToLower()))
            {
                Icon.sprite = MinionBlue;
            }
            else
            {
                Icon.sprite = MinionRed;
            }
            transform.localPosition = new Vector3(0, 200, 0);
            transform.localRotation = Quaternion.Euler(90, 0, 0);
            transform.localScale    = new Vector3(3, 3, 3);
        }
        else if (transform.parent.name.Contains("Tower"))
        {
            TBehavior = transform.parent.GetComponent <TowerBehaviour>();
            if (myteam.Equals(TBehavior.Team.ToString().ToLower()))
            {
                Icon.sprite = TowerBlue;
            }
            else
            {
                Icon.sprite = TowerRed;
            }
        }
        else if (transform.parent.name.Contains("Nexus") || transform.parent.name.Contains("Suppressor"))
        {
            SBehavior = transform.parent.GetComponent <SuppressorBehaviour>();
            if (myteam.Equals(SBehavior.Team.ToString().ToLower()))
            {
                Icon.sprite = TowerBlue;
            }
            else
            {
                Icon.sprite = TowerRed;
            }
        }
    }
Exemple #3
0
    public void ProgressBarColorChange()
    {
        if (suppressorBehaviour == null)
        {
            suppressorBehaviour = GetComponent <SuppressorBehaviour>();
        }

        if (PhotonNetwork.player.GetTeam().ToString().Equals(suppressorBehaviour.Team.ToLower()))
        {
            NHPBar.Bar.GetComponent <Image>().color = myTeamColor;
        }
        else
        {
            NHPBar.Bar.GetComponent <Image>().color = enemyTeamColor;
        }
    }
Exemple #4
0
    /// <summary>
    /// TriggerEnter한 콜라이더가 있을 때 공격 우선순위를 계산하는 함수
    /// </summary>
    /// <param name="trigCol">TriggerEnter한 콜라이더</param>
    /// <returns>계산한 우선순위 값을 리턴</returns>
    private int SetPriority(Collider trigCol)
    {
        int tempPriority = 6;

        if (trigCol.name.Contains(enemyColor) && trigCol.tag.Equals("Minion"))
        {
            AddEnemiesList(trigCol, 3);
            tempPriority = 3;
        }
        else if (trigCol.gameObject.layer.Equals(LayerMask.NameToLayer("Champion")))
        {
            if (trigCol.GetComponent <ChampionBehavior>().team.Equals(enemyColor))
            {
                AddEnemiesList(trigCol, 5);
                tempPriority = 5;
            }
        }
        else if (trigCol.tag.Equals("Tower"))
        {
            TowerBehaviour TowerBehav = trigCol.GetComponent <TowerBehaviour>();

            if (TowerBehav.isCanAtkMe)
            {
                if (TowerBehav.team.Equals(enemyColor))
                {
                    AddEnemiesList(trigCol, 4);
                    tempPriority = 4;
                }
            }
        }
        else if (trigCol.tag.Equals("Suppressor") || trigCol.tag.Equals("Nexus"))
        {
            SuppressorBehaviour SupBehav = trigCol.GetComponent <SuppressorBehaviour>();

            if (SupBehav.isCanAtkMe)
            {
                if (SupBehav.team.Equals(enemyColor))
                {
                    AddEnemiesList(trigCol, 4);
                    tempPriority = 4;
                }
            }
        }

        return(tempPriority);
    }
    /// <summary>
    /// 공격을 담당하는 코루틴
    /// </summary>
    IEnumerator Attack()
    {
        while (!myChampBehav.isDead)
        {
            if (!isAtkPause)
            {
                bool isCheck = true;

                if (!isTargetting)
                {
                    isCheck = false;
                }
                else if (atkTargetObj == null)
                {
                    isCheck = false;
                }
                else if (atkTargetObj.Equals(aStarTargetObj))
                {
                    isCheck = false;
                }

                //타겟이 있다면 공격
                if (isCheck)
                {
                    myChampBehav.transform.DOLookAt(atkTargetObj.transform.position, 0);

                    //공격하는 대상과 피격당하는 대상을 구분하여 처리
                    if (atkTargetObj.tag.Equals("Minion"))
                    {
                        MakeAsheArrow();

                        MinionBehavior minBehav = atkTargetObj.GetComponent <MinionBehavior>();
                        AudioSource    minAudio = minBehav.transform.GetChild(minBehav.transform.childCount - 1).GetComponent <AudioSource>();

                        if (minBehav != null)
                        {
                            int viewID = minBehav.GetComponent <PhotonView>().viewID;
                            myChampBehav.HitRPC(viewID);
                            ChampionSound.instance.IamAttackedSound(minAudio, champName);

                            if (isAshe)
                            {
                                asheSkill.QCountUp();
                            }

                            minBehav.HitMe(myChampionData.totalStat.AttackDamage, "AD", myChampBehav.gameObject);

                            if (!skillKey.Equals(""))
                            {
                                if (--skillKeyNum < 1)
                                {
                                    skillKey = "";
                                }
                            }
                        }
                    }
                    else if (atkTargetObj.layer.Equals(LayerMask.NameToLayer("Champion")))
                    {
                        MakeAsheArrow();

                        ChampionBehavior champBehav = atkTargetObj.GetComponent <ChampionBehavior>();
                        AudioSource      champaudio = champBehav.gameObject.GetComponent <AudioSource>();

                        if (champBehav != null)
                        {
                            int viewID = champBehav.GetComponent <PhotonView>().viewID;
                            myChampBehav.HitRPC(viewID);
                            ChampionSound.instance.IamAttackedSound(champaudio, champName);

                            if (isAshe)
                            {
                                asheSkill.QCountUp();
                            }

                            champBehav.HitMe(myChampionData.totalStat.AttackDamage, "AD", myChampBehav.gameObject, myChampBehav.name);

                            if (!skillKey.Equals(""))
                            {
                                if (--skillKeyNum < 1)
                                {
                                    skillKey = "";
                                }
                            }
                        }
                    }
                    else if (atkTargetObj.tag.Equals("Tower"))
                    {
                        MakeAsheArrow();
                        TowerBehaviour towerBehav = atkTargetObj.GetComponent <TowerBehaviour>();
                        AudioSource    towerAudio = towerBehav.GetComponent <AudioSource>();

                        if (towerBehav != null)
                        {
                            string key     = "";
                            char[] keyChar = towerBehav.gameObject.name.ToCharArray();

                            for (int i = 13; i < 16; ++i)
                            {
                                key += keyChar[i];
                            }

                            myChampBehav.HitRPC(key);
                            ChampionSound.instance.IamAttackedSound(towerAudio, champName);

                            if (isAshe)
                            {
                                asheSkill.QCountUp();
                            }

                            // 타워를 파괴 시 팀의 cs, 골드, 경험치를 올린다
                            if (towerBehav.HitMe(myChampionData.totalStat.AttackDamage))
                            {
                                myChampionData.Kill_CS_Gold_Exp(atkTargetObj.name, 2, atkTargetObj.transform.position);
                                ResetTarget();
                            }

                            if (!skillKey.Equals(""))
                            {
                                if (--skillKeyNum < 1)
                                {
                                    skillKey = "";
                                }
                            }
                        }
                    }
                    else if (atkTargetObj.tag.Equals("Suppressor"))
                    {
                        MakeAsheArrow();
                        SuppressorBehaviour supBehav = atkTargetObj.GetComponent <SuppressorBehaviour>();

                        if (supBehav != null)
                        {
                            string key     = "";
                            char[] keyChar = supBehav.gameObject.name.ToCharArray();

                            for (int i = 11; i < 14; ++i)
                            {
                                key += keyChar[i];
                            }

                            myChampBehav.HitRPC(key);

                            if (isAshe)
                            {
                                asheSkill.QCountUp();
                            }

                            supBehav.HitMe(myChampionData.totalStat.AttackDamage);

                            if (!skillKey.Equals(""))
                            {
                                if (--skillKeyNum < 1)
                                {
                                    skillKey = "";
                                }
                            }
                        }
                    }
                    else if (atkTargetObj.tag.Equals("Nexus"))
                    {
                        MakeAsheArrow();
                        SuppressorBehaviour supBehav = atkTargetObj.GetComponent <SuppressorBehaviour>();

                        if (supBehav != null)
                        {
                            string key     = "";
                            char[] keyChar = supBehav.gameObject.name.ToCharArray();
                            key += keyChar[6];
                            myChampBehav.HitRPC(key);

                            if (isAshe)
                            {
                                asheSkill.QCountUp();
                            }

                            supBehav.HitMe(myChampionData.totalStat.AttackDamage);

                            if (!skillKey.Equals(""))
                            {
                                if (--skillKeyNum < 1)
                                {
                                    skillKey = "";
                                }
                            }
                        }
                    }
                    else if (atkTargetObj.layer.Equals(LayerMask.NameToLayer("Monster")))
                    {
                        MakeAsheArrow();
                        MonsterBehaviour monBehav = atkTargetObj.GetComponent <MonsterBehaviour>();

                        if (monBehav != null)
                        {
                            int viewID = monBehav.GetComponent <PhotonView>().viewID;
                            myChampBehav.HitRPC(viewID);

                            if (isAshe)
                            {
                                asheSkill.QCountUp();
                            }

                            monBehav.HitMe(myChampionData.totalStat.AttackDamage, "AD", myChamp);

                            if (!skillKey.Equals(""))
                            {
                                if (--skillKeyNum < 1)
                                {
                                    skillKey = "";
                                }
                            }
                        }
                    }
                }
            }

            float AtkSpeed = myChampionData.myStat.AttackSpeed * (1 + (myChampionData.totalStat.UP_AttackSpeed * (myChampionData.totalStat.Level - 1) + (myChampionData.totalStat.AttackSpeed - myChampionData.myStat.AttackSpeed)) / 100);
            //어택 딜레이타임을 1초로 설정
            atkDelayTime = 1f / AtkSpeed;

            yield return(new WaitForSeconds(atkDelayTime));
        }
    }
    private void Update()
    {
        //딜레이 타임 확인
        CheckAtkDelayTime();

        //와드 설치 명령이 있다면 와드를 설치한다
        if (isWarding)
        {
            InstallWard();
        }

        //논 타겟팅 어택 명령이 있다면 적 리스트에 있는 이 중 가장 가까운 이를 찾는다.
        if (isWillAtkAround)
        {
            float      dist = 1000000, nowDist;
            GameObject tempObj = null;

            for (int i = 0; i < enemiesList.Count; ++i)
            {
                if (enemiesList[i].tag.Equals("Tower"))
                {
                    TowerBehaviour towerBehav = enemiesList[i].GetComponent <TowerBehaviour>();

                    if (!towerBehav.isCanAtkMe)
                    {
                        continue;
                    }

                    if (towerBehav.team == myChampBehav.team)
                    {
                        continue;
                    }
                }
                else if (enemiesList[i].tag.Equals("Suppressor") || enemiesList[i].tag.Equals("Nexus"))
                {
                    SuppressorBehaviour supBehav = enemiesList[i].GetComponent <SuppressorBehaviour>();

                    if (!supBehav.isCanAtkMe)
                    {
                        continue;
                    }

                    if (supBehav.team == myChampBehav.team)
                    {
                        continue;
                    }
                }
                else if (enemiesList[i].layer.Equals(LayerMask.NameToLayer("Monster")))
                {
                    MonsterBehaviour monBehav = enemiesList[i].GetComponent <MonsterBehaviour>();

                    if (!monBehav.TheFogEntity.isCanTargeting)
                    {
                        continue;
                    }

                    if (!monBehav.monAtk.isAtking)
                    {
                        continue;
                    }
                }
                else if (enemiesList[i].layer.Equals(LayerMask.NameToLayer("Champion")))
                {
                    ChampionBehavior champBehav = enemiesList[i].GetComponent <ChampionBehavior>();

                    if (champBehav.team == myChampBehav.team)
                    {
                        continue;
                    }
                }

                nowDist = (enemiesList[i].transform.position - myChamp.transform.position).sqrMagnitude;

                if (dist > nowDist)
                {
                    dist    = nowDist;
                    tempObj = enemiesList[i];
                }

                // 만약 타겟팅할 적을 찾았다면 타겟팅한다
                if (tempObj != null)
                {
                    atkTargetObj    = tempObj;
                    isTargetting    = true;
                    isWillAtkAround = false;
                    fxpool.GetPool("Force", tempObj.transform.position, tempObj.transform.gameObject);
                }
            }
        }

        // 공격할 적이 있는 경우
        if (atkTargetObj != null)
        {
            if (isTargetting && atkTargetObj.activeInHierarchy)
            {
                if (TheAIDest.target != atkTargetObj.transform)
                {
                    TheAIDest.target = atkTargetObj.transform;
                }

                atkTargetPos   = atkTargetObj.transform.position;
                myChampPos     = myChamp.transform.position;
                atkTargetPos.y = 0;
                myChampPos.y   = 0;
                float atkRevision = 0;

                // 건물의 반지름에 따라 거리 보정을 넣어준다
                if (atkTargetObj.tag.Equals("Tower") && atkRange < 5)
                {
                    atkRevision = 1f;
                }
                else if (atkTargetObj.tag.Equals("Suppressor") && atkRange < 5)
                {
                    atkRevision = 2.5f;
                }
                else if (atkTargetObj.tag.Equals("Nexus") && atkRange < 5)
                {
                    atkRevision = 7f;
                }

                // 공격 반경 밖에 타겟이 있다면 다가간다
                if (Vector3.Distance(atkTargetPos, myChampPos) > atkRange + atkRevision)
                {
                    if (!TheAIPath.canMove)
                    {
                        ToggleMove(true);
                        myChampionAnimation.AttackAnimation(false);
                    }

                    if (atkCoroutine != null)
                    {
                        myChampionAnimation.AttackAnimation(false);
                        StopCoroutine(atkCoroutine);
                        atkCoroutine = null;
                    }
                }
                else
                {// 공격 반경 안에 타겟이 있다면 공격한다
                    if (!isAtkDelayTime)
                    {
                        if (TheAIPath.canMove)
                        {
                            ToggleMove(false);
                            myChampionAnimation.AttackAnimation(true);
                        }

                        if (atkCoroutine == null)
                        {
                            atkCoroutine = StartCoroutine(Attack());
                        }
                    }
                }
            }
            else
            {
                ResetTarget();
            }
        }
        else
        {
            ResetTarget();
        }

        // 시간이 지난 만큼 와드의 쿨타임을 감소시킨다
        CheckMadeWardCooldown();
    }
Exemple #7
0
    /// <summary>
    /// 공격을 담당하는 코루틴
    /// </summary>
    IEnumerator Attack()
    {
        while (true)
        {
            if (!isAtkPause)
            {
                bool isCheck = true;

                if (nowTarget == null)
                {
                    isCheck = false;
                }
                else if (!nowTarget.activeInHierarchy)
                {
                    isCheck = false;
                }

                //타겟이 있다면 공격
                if (isCheck)
                {
                    if (anim.GetBool("walking"))
                    {
                        anim.SetBool("walking", false);
                    }

                    anim.SetTrigger("attack");
                    Vector3 v = nowTarget.transform.position;
                    v.y = 0;
                    myMinion.transform.DOLookAt(v, 1);

                    //공격하는 대상과 피격당하는 대상을 구분하여 처리
                    if (nowTarget.tag.Equals("Minion"))
                    {
                        if (myMinion.name.Contains("Melee"))
                        {
                            MinionBehavior minBehav = nowTarget.GetComponent <MinionBehavior>();

                            if (minBehav != null)
                            {
                                int viewID = minBehav.GetComponent <PhotonView>().viewID;
                                myBehav.HitRPC(viewID);
                                minBehav.HitMe(myBehav.stat.AttackDamage);
                            }
                        }
                        else if (myMinion.name.Contains("Magician"))
                        {
                            float moveTime = 0.4f;
                            myBehav.ArrowRPC(nowTarget.transform.position, moveTime);
                            Invoke("ProjectileAtk", moveTime);
                        }
                        else if (myMinion.name.Contains("Siege"))
                        {
                            float moveTime = 0.4f;
                            myBehav.CannonballRPC(nowTarget.transform.position, moveTime);
                            Invoke("ProjectileAtk", moveTime);
                        }
                    }
                    else if (nowTarget.layer.Equals(LayerMask.NameToLayer("Champion")))
                    {
                        if (myMinion.name.Contains("Melee"))
                        {
                            ChampionBehavior champBehav = nowTarget.GetComponent <ChampionBehavior>();

                            if (champBehav != null)
                            {
                                int viewID = champBehav.GetComponent <PhotonView>().viewID;
                                myBehav.HitRPC(viewID);
                                champBehav.HitMe(myBehav.stat.AttackDamage, "AD", myMinion, myMinion.name);
                            }
                        }
                        else if (myMinion.name.Contains("Magician"))
                        {
                            float moveTime = 0.4f;
                            myBehav.ArrowRPC(nowTarget.transform.position, moveTime);
                            Invoke("ProjectileAtk", moveTime);
                        }
                        else if (myMinion.name.Contains("Siege"))
                        {
                            float moveTime = 0.4f;
                            myBehav.CannonballRPC(nowTarget.transform.position, moveTime);
                            Invoke("ProjectileAtk", moveTime);
                        }
                    }
                    else if (nowTarget.tag.Equals("Tower"))
                    {
                        if (myMinion.name.Contains("Melee"))
                        {
                            TowerBehaviour towerBehav = nowTarget.GetComponent <TowerBehaviour>();

                            if (towerBehav != null)
                            {
                                string key     = "";
                                char[] keyChar = towerBehav.gameObject.name.ToCharArray();

                                for (int i = 13; i < 16; ++i)
                                {
                                    key += keyChar[i];
                                }

                                myBehav.HitRPC(key);

                                if (towerBehav.HitMe(myBehav.stat.AttackDamage))
                                {
                                    if (enemyColor.Equals("Red"))
                                    {
                                        TheInGameManager.blueTeamPlayer[0].GetComponent <PhotonView>().RPC("GlobalGold", PhotonTargets.All, "blue", 100);
                                    }
                                    else
                                    {
                                        TheInGameManager.redTeamPlayer[0].GetComponent <PhotonView>().RPC("GlobalGold", PhotonTargets.All, "red", 100);
                                    }

                                    enemiesList.Remove(nowTarget);
                                }
                            }
                        }
                        else if (myMinion.name.Contains("Magician"))
                        {
                            float moveTime = 0.4f;
                            myBehav.ArrowRPC(nowTarget.transform.position, moveTime);
                            Invoke("ProjectileAtk", moveTime);
                        }
                        else if (myMinion.name.Contains("Siege"))
                        {
                            float moveTime = 0.4f;
                            myBehav.CannonballRPC(nowTarget.transform.position, moveTime);
                            Invoke("ProjectileAtk", moveTime);
                        }
                    }
                    else if (nowTarget.tag.Equals("Suppressor") || nowTarget.tag.Equals("Nexus"))
                    {
                        if (myMinion.name.Contains("Melee"))
                        {
                            SuppressorBehaviour supBehav = nowTarget.GetComponent <SuppressorBehaviour>();

                            if (supBehav != null)
                            {
                                string key     = "";
                                char[] keyChar = supBehav.gameObject.name.ToCharArray();

                                if (nowTarget.tag.Equals("Nexus"))
                                {
                                    key += keyChar[6];
                                }
                                else
                                {
                                    for (int i = 11; i < 14; ++i)
                                    {
                                        key += keyChar[i];
                                    }
                                }

                                myBehav.HitRPC(key);

                                if (supBehav.HitMe(myBehav.stat.AttackDamage))
                                {
                                    enemiesList.Remove(nowTarget);
                                }
                            }
                        }
                        else if (myMinion.name.Contains("Magician"))
                        {
                            float moveTime = 0.4f;
                            myBehav.ArrowRPC(nowTarget.transform.position, moveTime);
                            Invoke("ProjectileAtk", moveTime);
                        }
                        else if (myMinion.name.Contains("Siege"))
                        {
                            float moveTime = 0.4f;
                            myBehav.CannonballRPC(nowTarget.transform.position, moveTime);
                            Invoke("ProjectileAtk", moveTime);
                        }
                    }
                }
            }

            //어택 딜레이타임을 1초로 설정
            atkDelayTime = 1f;

            yield return(new WaitForSeconds(1));
        }
    }
    /// <summary>
    /// 현재 마우스로 적을 클릭했는지 여부를 확인해주는 함수
    /// </summary>
    /// <param name="hit">클릭 시 Raycast로 얻은 RaycastHit</param>
    /// <returns>적을 클릭했는지 여부를 리턴</returns>
    private bool CheckTouchEnemy(RaycastHit hit)
    {
        bool isTouchEnemy = false;

        if (hit.collider.tag.Equals("Minion"))
        {//미니언과 충돌했을 때
         //적팀인 미니언이라면 적과 충돌했음을 체크한다.
            if (!hit.collider.name.Contains(playerTeam))
            {
                if (hit.collider.GetComponent <FogOfWarEntity>().isCanTargeting)
                {
                    isTouchEnemy = true;
                }
            }
        }
        else if (hit.collider.gameObject.layer.Equals(LayerMask.NameToLayer("Champion")))
        {//챔피언과 충돌했을 때
         //적팀인 챔피언이라면 적과 충돌했음을 체크한다.
            if (!hit.collider.gameObject.GetComponent <ChampionBehavior>().team.Equals(playerTeam))
            {
                if (hit.collider.GetComponent <FogOfWarEntity>().isCanTargeting)
                {
                    isTouchEnemy = true;
                }
            }
        }
        else if (hit.collider.tag.Equals("Tower"))
        {//타워와 충돌했을 때
            TowerBehaviour towerBehav = hit.collider.gameObject.GetComponent <TowerBehaviour>();

            //적팀인 타워라면 적과 충돌했음을 체크한다.
            if (towerBehav.isCanAtkMe)
            {
                if (!towerBehav.team.Equals(playerTeam))
                {
                    isTouchEnemy = true;
                }
            }
        }
        else if (hit.collider.tag.Equals("Suppressor") || hit.collider.tag.Equals("Nexus"))
        {//억제기나 넥서스와 충돌했을 때
            SuppressorBehaviour supBehav = hit.collider.gameObject.GetComponent <SuppressorBehaviour>();

            //적팀이라면 적과 충돌했음을 체크한다.
            if (supBehav.isCanAtkMe)
            {
                if (!supBehav.team.Equals(playerTeam))
                {
                    isTouchEnemy = true;
                }
            }
        }
        else if (hit.collider.gameObject.layer.Equals(LayerMask.NameToLayer("Monster"))) //몬스터와 충돌했다면 적과 충돌했음을 체크한다.
        {
            if (hit.collider.GetComponent <FogOfWarEntity>().isCanTargeting)
            {
                isTouchEnemy = true;
            }
        }
        return(isTouchEnemy);
    }
Exemple #9
0
    private void Update()
    {
        if (UnityEngine.SceneManagement.SceneManager.GetActiveScene().name.Equals("InGame"))
        {
            if (PlayerData.Instance.isDead)
            {
                return;
            }
            if (Input.GetKeyDown(KeyCode.A))
            {
                atkCommand  = !atkCommand;
                wardCommand = false;
            }
            else if (Input.GetKeyDown(KeyCode.Alpha4))
            {
                if (PlayerData.Instance.accessoryItem.Equals(1))
                {
                    wardCommand = !wardCommand;
                    if (wardCommand)
                    {
                        if (myChampAtk.wardAmount < 1)
                        {
                            wardCommand = false;
                            atkCommand  = false;
                        }
                    }
                }
            }
            else if (Input.GetKeyDown(KeyCode.S))
            {
                myChampAtk.Stop();
            }
            if (Input.GetMouseButtonDown(1))
            {
                soundtimer -= Time.deltaTime;
                if (soundtimer <= 0)
                {
                    ChampionSound.instance.WalkSound(myChampName);
                    soundtimer = 5.0f;
                }
                //우선 이동만. 나중엔 공격인지 뭔지 그런 것 판단도 해야 할 것.
                if (atkCommand)
                {
                    atkCommand = false;
                }
                if (wardCommand)
                {
                    if (myChampAtk.wardAmount > 0)
                    {
                        wardCommand = false;
                    }
                }

                Vector3    h           = Vector3.zero;
                GameObject target      = null;
                bool       touchGround = false;
                bool       touchEnemy  = false;

                v    = Input.mousePosition;
                r    = Camera.main.ScreenPointToRay(v);
                hits = Physics.RaycastAll(r);
                foreach (RaycastHit hit in hits)
                {
                    if (hit.collider.tag.Equals("Terrain"))
                    {
                        h           = hit.point;
                        h.y         = 1;
                        touchGround = true;
                        if (!fxpool && UnityEngine.SceneManagement.SceneManager.GetActiveScene().name == "InGame")
                        {
                            fxpool = GameObject.FindGameObjectWithTag("MouseFxPool").GetComponent <MouseFxPooling>();
                        }
                        fxpool.GetPool("Default", h);
                    }
                    else if (hit.collider.tag.Equals("Minion"))
                    {
                        if (!hit.collider.name.Contains(playerTeam))
                        {
                            if (hit.collider.GetComponent <FogOfWarEntity>().isCanTargeting)
                            {
                                touchEnemy = true;
                            }
                        }
                    }
                    else if (hit.collider.gameObject.layer.Equals(LayerMask.NameToLayer("Champion")))
                    {
                        if (!hit.collider.gameObject.GetComponent <ChampionBehavior>().Team.Equals(playerTeam))
                        {
                            if (hit.collider.GetComponent <FogOfWarEntity>().isCanTargeting)
                            {
                                touchEnemy = true;
                            }
                        }
                    }
                    else if (hit.collider.tag.Equals("Tower"))
                    {
                        TowerBehaviour t = hit.collider.gameObject.GetComponent <TowerBehaviour>();
                        if (t.isCanAtkMe)
                        {
                            if (!t.Team.Equals(playerTeam))
                            {
                                //if (hit.collider.GetComponent<FogOfWarEntity>().isCanTargeting)
                                touchEnemy = true;
                            }
                        }
                    }
                    else if (hit.collider.tag.Equals("Suppressor") || hit.collider.tag.Equals("Nexus"))
                    {
                        SuppressorBehaviour s = hit.collider.gameObject.GetComponent <SuppressorBehaviour>();
                        if (s.isCanAtkMe)
                        {
                            if (!s.Team.Equals(playerTeam))
                            {
                                //if (hit.collider.GetComponent<FogOfWarEntity>().isCanTargeting)
                                touchEnemy = true;
                            }
                        }
                    }
                    else if (hit.collider.gameObject.layer.Equals(LayerMask.NameToLayer("Monster")))
                    {
                        if (hit.collider.GetComponent <FogOfWarEntity>().isCanTargeting)
                        {
                            touchEnemy = true;
                        }
                    }
                    if (touchEnemy)
                    {
                        target = hit.collider.gameObject;
                        break;
                    }
                }

                // 상점 켜져있으면 뒤로 움직이지않게
                var shop = GameObject.FindGameObjectWithTag("ShopCanvas");
                if (shop != null)
                {
                    GraphicRaycaster ShopGR = shop.GetComponent <GraphicRaycaster>();
                    PointerEventData ped    = new PointerEventData(null);
                    ped.position = Input.mousePosition;
                    List <RaycastResult> results = new List <RaycastResult>();
                    ShopGR.Raycast(ped, results);
                    foreach (RaycastResult result in results)
                    {
                        if (result.gameObject.transform.GetComponentInParent <GraphicRaycaster>().Equals(ShopGR))
                        {
                            touchEnemy  = false;
                            touchGround = false;
                            break;
                        }
                    }
                }

                // 옵션 켜져있으면 움직이지않게
                var optionCanvas = GameObject.FindGameObjectWithTag("OptionCanvas");
                if (optionCanvas != null)
                {
                    GraphicRaycaster OptionGR = optionCanvas.GetComponent <GraphicRaycaster>();
                    PointerEventData ped      = new PointerEventData(null);
                    ped.position = Input.mousePosition;
                    List <RaycastResult> results = new List <RaycastResult>();
                    OptionGR.Raycast(ped, results);
                    foreach (RaycastResult result in results)
                    {
                        if (result.gameObject.transform.GetComponentInParent <GraphicRaycaster>().Equals(OptionGR))
                        {
                            touchEnemy  = false;
                            touchGround = false;
                            break;
                        }
                    }
                }

                if (touchEnemy)
                {
                    myTarget.transform.position = transform.position;
                    myChampAtk.willAtkAround    = false;
                    if (!myChampAtk.isTargetting)
                    {
                        myChampAtk.isTargetting = true;
                        myChampAtk.AtkTargetObj = target;
                    }
                }
                else if (touchGround)
                {
                    //if (MinimapClick.IsPointerOver)
                    //    return;
                    myTarget.transform.position = h;
                    myChampAtk.willAtkAround    = false;
                    if (myChampAtk.isTargetting)
                    {
                        myChampAtk.isTargetting        = false;
                        myChampAtk.AtkTargetObj        = null;
                        myChampAtk.TheAIPath.canMove   = true;
                        myChampAtk.TheAIPath.canSearch = true;
                    }
                }
            }
            else if (Input.GetMouseButtonDown(0))
            {
                if (atkCommand)
                {
                    atkCommand = false;
                    Vector3    h           = Vector3.zero;
                    GameObject target      = null;
                    bool       touchGround = false;
                    bool       touchEnemy  = false;
                    v    = Input.mousePosition;
                    r    = Camera.main.ScreenPointToRay(v);
                    hits = Physics.RaycastAll(r);
                    foreach (RaycastHit hit in hits)
                    {
                        if (hit.collider.tag.Equals("Terrain"))
                        {
                            h           = hit.point;
                            h.y         = 1;
                            touchGround = true;
                            fxpool.GetPool("Force", h);
                        }
                        else if (hit.collider.tag.Equals("Minion"))
                        {
                            if (!hit.collider.name.Contains(playerTeam))
                            {
                                if (hit.collider.GetComponent <FogOfWarEntity>().isCanTargeting)
                                {
                                    touchEnemy = true;
                                }
                            }
                            fxpool.GetPool("Force", h, hit.transform.gameObject);
                        }
                        else if (hit.collider.gameObject.layer.Equals(LayerMask.NameToLayer("Champion")))
                        {
                            if (!hit.collider.gameObject.GetComponent <ChampionBehavior>().Team.Equals(playerTeam))
                            {
                                if (hit.collider.GetComponent <FogOfWarEntity>().isCanTargeting)
                                {
                                    touchEnemy = true;
                                }
                            }
                            fxpool.GetPool("Force", h, hit.transform.gameObject);
                        }
                        else if (hit.collider.tag.Equals("Tower"))
                        {
                            TowerBehaviour t = hit.collider.gameObject.GetComponent <TowerBehaviour>();
                            if (t.isCanAtkMe)
                            {
                                if (!t.Team.Equals(playerTeam))
                                {
                                    //if (hit.collider.GetComponent<FogOfWarEntity>().isCanTargeting)
                                    touchEnemy = true;
                                }
                            }
                        }
                        else if (hit.collider.tag.Equals("Suppressor") || hit.collider.tag.Equals("Nexus"))
                        {
                            SuppressorBehaviour s = hit.collider.gameObject.GetComponent <SuppressorBehaviour>();
                            if (s.isCanAtkMe)
                            {
                                if (!s.Team.Equals(playerTeam))
                                {
                                    //if (hit.collider.GetComponent<FogOfWarEntity>().isCanTargeting)
                                    touchEnemy = true;
                                }
                            }
                        }
                        else if (hit.collider.gameObject.layer.Equals(LayerMask.NameToLayer("Monster")))
                        {
                            //if (hit.collider.GetComponentInChildren<MonsterBehaviour>().monAtk.isAtking)//정글이 누굴 공격중이다
                            if (hit.collider.GetComponent <FogOfWarEntity>().isCanTargeting)
                            {
                                touchEnemy = true;
                            }
                            fxpool.GetPool("Force", h, hit.transform.gameObject);
                        }
                        if (touchEnemy)
                        {
                            target = hit.collider.gameObject;
                            break;
                        }
                    }

                    if (touchEnemy)
                    {
                        //myTarget.transform.position = transform.position;
                        myChampAtk.willAtkAround = false;
                        if (!myChampAtk.isTargetting)
                        {
                            myChampAtk.isTargetting = true;
                            myChampAtk.isWarding    = false;
                            myChampAtk.AtkTargetObj = target;
                        }
                    }
                    else if (touchGround)
                    {//여기 고치기
                        myTarget.transform.position = h;
                        myChampAtk.willAtkAround    = true;
                        if (myChampAtk.isTargetting)
                        {
                            myChampAtk.isTargetting = false;
                            myChampAtk.isWarding    = false;
                            myChampAtk.AtkTargetObj = null;
                        }
                    }
                }
                else if (wardCommand)
                {
                    Vector3 h = Vector3.zero;
                    v    = Input.mousePosition;
                    r    = Camera.main.ScreenPointToRay(v);
                    hits = Physics.RaycastAll(r);
                    foreach (RaycastHit hit in hits)
                    {
                        if (hit.collider.tag.Equals("Terrain"))
                        {
                            h   = hit.point;
                            h.y = 1;
                            bool       isNotCollision = true;
                            Collider[] Cols           = Physics.OverlapSphere(h, 1f);
                            foreach (Collider a in Cols)
                            {
                                if (a.tag.Equals("WarCollider"))
                                {
                                    isNotCollision = false;
                                    break;
                                }
                            }
                            if (isNotCollision)
                            {
                                wardCommand = false;
                                myChampAtk.WantBuildWard(h);
                            }
                        }
                    }
                }
            }
        }
    }
Exemple #10
0
 IEnumerator AtkMotion()
 {
     while (true)
     {
         if (!isAtkPause)
         {
             bool check = true;
             if (!isTargetting)
             {
                 check = false;
             }
             else if (AtkTargetObj == null)
             {
                 check = false;
             }
             else if (AtkTargetObj.Equals(AStarTargetObj))
             {
                 check = false;
             }
             if (check)
             {
                 myChampBehav.transform.DOLookAt(AtkTargetObj.transform.position, 0);
                 if (AtkTargetObj.tag.Equals("Minion"))
                 {
                     if (isAshe)
                     {
                         float moveTime = 0.4f;
                         myChampBehav.ArrowRPC(AtkTargetObj.transform.position, moveTime);
                     }
                     MinionBehavior behav    = AtkTargetObj.GetComponent <MinionBehavior>();
                     AudioSource    minAudio = behav.transform.GetChild(behav.transform.childCount - 1).GetComponent <AudioSource>();
                     if (behav != null)
                     {
                         int viewID = behav.GetComponent <PhotonView>().viewID;
                         myChampBehav.HitRPC(viewID);
                         ChampionSound.instance.IamAttackedSound(minAudio, champname);
                         if (isAshe)
                         {
                             asheSkill.qCountUp();
                         }
                         if (behav.HitMe(myChampionData.totalstat.Attack_Damage, "AD", myChampBehav.gameObject))
                         {
                             // 미니언쳤는데 죽었으면 cs, 골드 경험치 올려라
                             myChampionData.Kill_CS_Gold_Exp(AtkTargetObj.name, 1, AtkTargetObj.transform.position);
                             ResetTarget();
                         }
                         if (!skillKey.Equals(""))
                         {
                             if (--skillKeyNum < 1)
                             {
                                 skillKey = "";
                             }
                         }
                     }
                 }
                 //else if (AtkTargetObj.tag.Equals("Player"))
                 else if (AtkTargetObj.layer.Equals(LayerMask.NameToLayer("Champion")))
                 {//이 태그대로 할건지 바뀌는지는 모르겠음. 우선 챔피언 공격임.
                     if (isAshe)
                     {
                         float moveTime = 0.4f;
                         myChampBehav.ArrowRPC(AtkTargetObj.transform.position, moveTime);
                     }
                     ChampionBehavior behav      = AtkTargetObj.GetComponent <ChampionBehavior>();
                     AudioSource      champaudio = behav.gameObject.GetComponent <AudioSource>();
                     if (behav != null)
                     {
                         int viewID = behav.GetComponent <PhotonView>().viewID;
                         myChampBehav.HitRPC(viewID);
                         ChampionSound.instance.IamAttackedSound(champaudio, champname);
                         if (isAshe)
                         {
                             asheSkill.qCountUp();
                         }
                         if (behav.HitMe(myChampionData.totalstat.Attack_Damage, "AD", myChampBehav.gameObject, myChampBehav.name))
                         {
                             // 유저쳤는데 죽었으면 kill 골드 경험치 올려라
                             myChampionData.Kill_CS_Gold_Exp(AtkTargetObj.name, 0, AtkTargetObj.transform.position);
                             sysmsg.sendKillmsg(myChampionData.ChampionName, behav.GetComponent <ChampionData>().ChampionName, myChampBehav.Team);
                             ResetTarget();
                         }
                         if (!skillKey.Equals(""))
                         {
                             if (--skillKeyNum < 1)
                             {
                                 skillKey = "";
                             }
                         }
                     }
                 }
                 else if (AtkTargetObj.tag.Equals("Tower"))
                 {
                     if (isAshe)
                     {
                         float moveTime = 0.4f;
                         myChampBehav.ArrowRPC(AtkTargetObj.transform.position, moveTime);
                     }
                     TowerBehaviour behav      = AtkTargetObj.GetComponent <TowerBehaviour>();
                     AudioSource    towerAudio = behav.GetComponent <AudioSource>();
                     if (behav != null)
                     {
                         string key     = "";
                         char[] keyChar = behav.gameObject.name.ToCharArray();
                         for (int i = 13; i < 16; ++i)
                         {
                             key += keyChar[i];
                         }
                         myChampBehav.HitRPC(key);
                         ChampionSound.instance.IamAttackedSound(towerAudio, champname);
                         if (isAshe)
                         {
                             asheSkill.qCountUp();
                         }
                         if (behav.HitMe(myChampionData.totalstat.Attack_Damage))
                         {
                             // 타워쳤는데 죽으면 cs 골드 경험치 올려라
                             myChampionData.Kill_CS_Gold_Exp(AtkTargetObj.name, 2, AtkTargetObj.transform.position);
                             ResetTarget();
                         }
                         if (!skillKey.Equals(""))
                         {
                             if (--skillKeyNum < 1)
                             {
                                 skillKey = "";
                             }
                         }
                     }
                 }
                 else if (AtkTargetObj.tag.Equals("Suppressor"))
                 {
                     if (isAshe)
                     {
                         float moveTime = 0.4f;
                         myChampBehav.ArrowRPC(AtkTargetObj.transform.position, moveTime);
                     }
                     SuppressorBehaviour behav = AtkTargetObj.GetComponent <SuppressorBehaviour>();
                     if (behav != null)
                     {
                         string key     = "";
                         char[] keyChar = behav.gameObject.name.ToCharArray();
                         for (int i = 11; i < 14; ++i)
                         {
                             key += keyChar[i];
                         }
                         myChampBehav.HitRPC(key);
                         if (isAshe)
                         {
                             asheSkill.qCountUp();
                         }
                         if (behav.HitMe(myChampionData.totalstat.Attack_Damage))
                         {
                             // 억제기쳤는데 죽으면 cs 골드 경험치 올려라
                             myChampionData.Kill_CS_Gold_Exp(AtkTargetObj.name, 2, AtkTargetObj.transform.position);
                             ResetTarget();
                         }
                         if (!skillKey.Equals(""))
                         {
                             if (--skillKeyNum < 1)
                             {
                                 skillKey = "";
                             }
                         }
                     }
                 }
                 else if (AtkTargetObj.tag.Equals("Nexus"))
                 {
                     if (isAshe)
                     {
                         float moveTime = 0.4f;
                         myChampBehav.ArrowRPC(AtkTargetObj.transform.position, moveTime);
                     }
                     SuppressorBehaviour behav = AtkTargetObj.GetComponent <SuppressorBehaviour>();
                     if (behav != null)
                     {
                         string key     = "";
                         char[] keyChar = behav.gameObject.name.ToCharArray();
                         key += keyChar[6];
                         myChampBehav.HitRPC(key);
                         if (isAshe)
                         {
                             asheSkill.qCountUp();
                         }
                         if (behav.HitMe(myChampionData.totalstat.Attack_Damage))
                         {
                             ResetTarget();
                         }
                         if (!skillKey.Equals(""))
                         {
                             if (--skillKeyNum < 1)
                             {
                                 skillKey = "";
                             }
                         }
                     }
                 }
                 else if (AtkTargetObj.layer.Equals(LayerMask.NameToLayer("Monster")))
                 {
                     if (isAshe)
                     {
                         float moveTime = 0.4f;
                         myChampBehav.ArrowRPC(AtkTargetObj.transform.position, moveTime);
                     }
                     MonsterBehaviour behav = AtkTargetObj.GetComponent <MonsterBehaviour>();
                     if (behav != null)
                     {
                         int viewID = behav.GetComponent <PhotonView>().viewID;
                         myChampBehav.HitRPC(viewID);
                         if (isAshe)
                         {
                             asheSkill.qCountUp();
                         }
                         if (behav.HitMe(myChampionData.totalstat.Attack_Damage, "AD", myChamp))
                         {
                             // 죽었으면 cs올려라
                             //myChampionData.Kill_CS_Gold_Exp(AtkTargetObj.name, 3, AtkTargetObj.transform.position);
                             ResetTarget();
                         }
                         if (!skillKey.Equals(""))
                         {
                             if (--skillKeyNum < 1)
                             {
                                 skillKey = "";
                             }
                         }
                     }
                 }
             }
         }
         float AS = myChampionData.mystat.Attack_Speed * (1 + (myChampionData.totalstat.UP_AttackSpeed * (myChampionData.totalstat.Level - 1) + (myChampionData.totalstat.Attack_Speed - myChampionData.mystat.Attack_Speed)) / 100);
         atkDelayTime = 1f / AS;
         yield return(new WaitForSeconds(atkDelayTime));
     }
 }
Exemple #11
0
    IEnumerator AtkMotion()
    {
        while (true)
        {
            if (!isAtkPause)
            {
                bool check = true;
                if (nowTarget == null)
                {
                    check = false;
                }
                else if (!nowTarget.activeInHierarchy)
                {
                    check = false;
                }

                if (check)
                {
                    if (Anim.GetBool("walking"))
                    {
                        Anim.SetBool("walking", false);
                    }
                    Anim.SetTrigger("attack");
                    Vector3 v = nowTarget.transform.position;
                    v.y = 0;
                    myMinion.transform.DOLookAt(v, 1);
                    if (nowTarget.tag.Equals("Minion"))
                    {
                        if (myMinion.name.Contains("Melee"))
                        {
                            MinionBehavior behav = nowTarget.GetComponent <MinionBehavior>();

                            if (behav != null)
                            {
                                int viewID = behav.GetComponent <PhotonView>().viewID;
                                myBehav.HitRPC(viewID);
                                if (behav.HitMe(myBehav.stat.Attack_Damage))
                                {
                                    enemiesList.Remove(nowTarget);
                                }
                            }
                        }
                        else if (myMinion.name.Contains("Magician"))
                        {
                            float moveTime = 0.4f;
                            myBehav.ArrowRPC(nowTarget.transform.position, moveTime);
                            Invoke("ProjectileAtk", moveTime);
                        }
                        else if (myMinion.name.Contains("Siege"))
                        {
                            float moveTime = 0.4f;
                            myBehav.CannonballRPC(nowTarget.transform.position, moveTime);
                            Invoke("ProjectileAtk", moveTime);
                        }
                    }
                    else if (nowTarget.layer.Equals(LayerMask.NameToLayer("Champion")))
                    {
                        if (myMinion.name.Contains("Melee"))
                        {
                            ChampionBehavior behav = nowTarget.GetComponent <ChampionBehavior>();

                            if (behav != null)
                            {
                                int viewID = behav.GetComponent <PhotonView>().viewID;
                                myBehav.HitRPC(viewID);
                                if (behav.HitMe(myBehav.stat.Attack_Damage, "AD", myMinion, myMinion.name))
                                {
                                    sysmsg.sendKillmsg("minion", behav.GetComponent <ChampionData>().ChampionName, myBehav.team.ToString());
                                    enemiesList.Remove(nowTarget);
                                }
                            }
                        }
                        else if (myMinion.name.Contains("Magician"))
                        {
                            float moveTime = 0.4f;
                            myBehav.ArrowRPC(nowTarget.transform.position, moveTime);
                            Invoke("ProjectileAtk", moveTime);
                        }
                        else if (myMinion.name.Contains("Siege"))
                        {
                            float moveTime = 0.4f;
                            myBehav.CannonballRPC(nowTarget.transform.position, moveTime);
                            Invoke("ProjectileAtk", moveTime);
                        }
                    }
                    else if (nowTarget.tag.Equals("Tower"))
                    {
                        if (myMinion.name.Contains("Melee"))
                        {
                            TowerBehaviour behav = nowTarget.GetComponent <TowerBehaviour>();

                            if (behav != null)
                            {
                                string key     = "";
                                char[] keyChar = behav.gameObject.name.ToCharArray();
                                for (int i = 13; i < 16; ++i)
                                {
                                    key += keyChar[i];
                                }
                                myBehav.HitRPC(key);
                                if (behav.HitMe(myBehav.stat.Attack_Damage))
                                {
                                    if (enemyColor.Equals("Red"))
                                    {
                                        inGameManager.blueTeamPlayer[0].GetComponent <PhotonView>().RPC("GlobalGold", PhotonTargets.All, "blue", 100);
                                    }
                                    else
                                    {
                                        inGameManager.redTeamPlayer[0].GetComponent <PhotonView>().RPC("GlobalGold", PhotonTargets.All, "red", 100);
                                    }
                                    enemiesList.Remove(nowTarget);
                                }
                            }
                        }
                        else if (myMinion.name.Contains("Magician"))
                        {
                            float moveTime = 0.4f;
                            myBehav.ArrowRPC(nowTarget.transform.position, moveTime);
                            Invoke("ProjectileAtk", moveTime);
                        }
                        else if (myMinion.name.Contains("Siege"))
                        {
                            float moveTime = 0.4f;
                            myBehav.CannonballRPC(nowTarget.transform.position, moveTime);
                            Invoke("ProjectileAtk", moveTime);
                        }
                    }
                    else if (nowTarget.tag.Equals("Suppressor") || nowTarget.tag.Equals("Nexus"))
                    {
                        if (myMinion.name.Contains("Melee"))
                        {
                            SuppressorBehaviour behav = nowTarget.GetComponent <SuppressorBehaviour>();

                            if (behav != null)
                            {
                                string key     = "";
                                char[] keyChar = behav.gameObject.name.ToCharArray();
                                if (nowTarget.tag.Equals("Nexus"))
                                {
                                    key += keyChar[6];
                                }
                                else
                                {
                                    for (int i = 11; i < 14; ++i)
                                    {
                                        key += keyChar[i];
                                    }
                                }
                                myBehav.HitRPC(key);
                                if (behav.HitMe(myBehav.stat.Attack_Damage))
                                {
                                    enemiesList.Remove(nowTarget);
                                }
                            }
                        }
                        else if (myMinion.name.Contains("Magician"))
                        {
                            float moveTime = 0.4f;
                            myBehav.ArrowRPC(nowTarget.transform.position, moveTime);
                            Invoke("ProjectileAtk", moveTime);
                        }
                        else if (myMinion.name.Contains("Siege"))
                        {
                            float moveTime = 0.4f;
                            myBehav.CannonballRPC(nowTarget.transform.position, moveTime);
                            Invoke("ProjectileAtk", moveTime);
                        }
                    }
                }
            }
            atkDelayTime = 1f;
            yield return(new WaitForSeconds(1));
        }
    }