Example #1
0
    void FirstFormatData()
    {
        firstGetData = false;
        //
        map = GameObject.Find("smallMapContainer").GetComponent <RectTransform>();
        //
        skillManager       = GetComponent <SkillBase>();
        clickPointPos      = GameObject.Find("clickPointPos");
        nav                = GetComponent <NavMeshAgent>();
        deadManager        = GetComponent <isDead>();
        nav.updateRotation = false;
        MyCreatPoints      = GetComponent <CreatPoints>();
        myAudio            = GetComponent <AudioSource>();
        ani                = GetComponent <Animator>();
        AniControll        = GetComponent <PlayerAni>();

        if (photonView.isMine)
        {
            if (leftTopPowerBar == null)
            {
                leftTopPowerBar = GameObject.Find("mpBar_0020").GetComponent <Image>();
            }

            myMainCamera = Camera.main;
        }
        originalData = PlayerData.instance.getPlayerData(meIs);
    }
Example #2
0
    void FirstformatData()
    {
        firstGetData = false;

        if (deadManager == null)
        {
            deadManager = GetComponent <isDead>();
        }

        Net           = GetComponent <PhotonView>();
        ani           = GetComponent <Animator>();
        myCollider    = GetComponent <CapsuleCollider>();
        nav           = GetComponent <NavMeshAgent>();
        myCreatPoints = GetComponent <CreatPoints>();
        if (photonView.isMine)
        {
            // nav.obstacleAvoidanceType = ObstacleAvoidanceType.NoObstacleAvoidance;
            originalData          = MyEnemyData.instance.getMySoldierData(DataName);
            myCreatPoints.enabled = false;
            checkCurrentPlay();
            nav.updateRotation = false;
        }
        else
        {
            originalData = MyEnemyData.instance.getEnemySoldierData(DataName);
            myCreatPoints.ProdecePoints();
            nav.enabled  = false;
            this.enabled = false;
        }
    }
Example #3
0
    public void goAtkPos(CreatPoints _tmpPoint, Transform firstPos, isDead _isdaed)
    {
        if (deadManager.checkDead)
        {
            return;
        }

        if (points != null)
        {
            points.RemoveThisPoint(correctPos);
        }

        points           = _tmpPoint;
        targetDeadScript = _isdaed;
        currentTarget    = _isdaed.gameObject;

        //前往找到的點
        points.AddWillGo_P(firstPos, correctPos);
        correctPos = firstPos;
        lastTmpPos = correctPos.position;
        resetChaseTime();

        //在距離內可直接攻擊
        if (IFRightNowAtk())
        {
            return;
        }

        nowState = states.AtkMove;
        getTatgetPoint(correctPos.position);
    }
Example #4
0
        protected void FirstformatData()
        {
            firstGetData      = false;
            Net               = GetComponent <PhotonView>();
            myCachedTransform = this.transform;
            MyCreatPoints     = GetComponent <CreatPoints>();

            if (deadManager == null)
            {
                deadManager = GetComponent <isDead>();
            }

            if (photonView.isMine)
            {
                MyCreatPoints.enabled = false;
                originalTurretData    = TurretData.instance.getTowerData(DataName);
                checkCurrentPlay();
            }
            else
            {
                MyCreatPoints.ProdecePoints(myCachedTransform);
                originalTurretData = TurretData.instance.getEnemyTowerData(DataName);
                this.enabled       = false;
            }
        }
Example #5
0
    public void takeDamage(int _id, float _damage)
    {
        if (deadManager.checkDead)
        {
            return;
        }

        #region 反擊判斷
        if (photonView.isMine && _id != 0)
        {
            if (!firstAtk && !ifFirstAtkTarget())
            {
                isDead _isdead = PhotonView.Find(_id).GetComponent <isDead>();

                if (_isdead.myAttributes != GameManager.NowTarget.Tower)
                {
                    if (points != null && correctPos != null)
                    {
                        points.RemoveThisPoint(correctPos);
                    }

                    firstAtk = true;
                    resetChaseTime();
                    if (!NowCC)
                    {
                        nowState = states.BeAtk;
                        nav.ResetPath();
                        if (!ani.GetBool(aniHashValue[1]))
                        {
                            Net.RPC("TP_stopAni", PhotonTargets.All, true);
                        }

                        currentTarget    = _isdead.gameObject;
                        points           = _isdead.gameObject.GetComponent <CreatPoints>();
                        targetDeadScript = _isdead;

                        beAttackStop();
                    }
                    else
                    {
                        currentTarget    = _isdead.gameObject;
                        points           = _isdead.gameObject.GetComponent <CreatPoints>();
                        targetDeadScript = _isdead;
                    }
                }
            }
        }
        #endregion
        MyHelath(CalculatorDamage(_damage));
    }
Example #6
0
    public void cancelSelectTarget(bool _now)
    {
        OtherSoldierNeedCancel();
        if (correctPos != null)
        {
            points.RemoveThisPoint(correctPos);
        }
        correctPos       = null;
        points           = null;
        targetDeadScript = null;
        currentTarget    = null;

        chaseTime = 0;
        nowTarget = GameManager.NowTarget.Null;
        firstAtk  = false;
        if (!_now)
        {
            chaseTime  = 1.5f;
            nowState   = states.Wait_TargetDie;
            stopDetect = false;
        }
    }
Example #7
0
    //優先攻擊士兵(可選擇打不打玩家)
    public myCorrectTarget CalculationDis_Soldier(EnemyControl _soldierScript, bool canAtkPlay)
    {
        tmpTargetStruct.myTarget = null;
        tmpTargetStruct.goPos    = null;

        //核心 ??

        //人
        if (canAtkPlay && enemy_Player != null)
        {
            if (!enemy_Player.GetComponent <isDead>().checkDead)//player不會被移出去,所以要判斷死了沒
            {
                if (Vector3.SqrMagnitude(enemy_Player.transform.position - _soldierScript.transform.position) < _soldierScript.viewRadius * _soldierScript.viewRadius)
                {
                    tmpPointScript = enemy_Player.MyCreatPoints;
                    if (!tmpPointScript.CheckFull(_soldierScript.enemyData.atk_Range))
                    {
                        tmpTransform = tmpPointScript.FindClosePoint(_soldierScript.enemyData.atk_Range, _soldierScript.transform, _soldierScript.enemyData.width);
                        if (tmpTransform != null)
                        {
                            tmpTargetStruct.nowPointScript = tmpPointScript;
                            tmpTargetStruct.myTarget       = enemy_Player.gameObject;
                            tmpTargetStruct.goPos          = tmpTransform;
                            return(tmpTargetStruct);
                        }
                    }
                }
            }
        }

        //士兵
        if (soldierAmount != 0)
        {
            for (int i = 0; i < soldierAmount; i++)
            {
                if (Vector3.SqrMagnitude(enemySoldierObjs[i].transform.position - _soldierScript.transform.position) < _soldierScript.viewRadius * _soldierScript.viewRadius)
                {
                    tmpPointScript = enemySoldierObjs[i].myCreatPoints;
                    if (!tmpPointScript.CheckFull(_soldierScript.enemyData.atk_Range))
                    {
                        tmpTransform = tmpPointScript.FindClosePoint(_soldierScript.enemyData.atk_Range, _soldierScript.transform, _soldierScript.enemyData.width);
                        if (tmpTransform != null)
                        {
                            if (tmpTargetStruct.myTarget != null)
                            {
                                if (Vector3.SqrMagnitude(enemySoldierObjs[i].transform.position - _soldierScript.transform.position) < Vector3.SqrMagnitude(tmpTargetStruct.myTarget.transform.position - _soldierScript.transform.position))
                                {
                                    tmpTargetStruct.nowPointScript = tmpPointScript;
                                    tmpTargetStruct.myTarget       = enemySoldierObjs[i].gameObject;
                                    tmpTargetStruct.goPos          = tmpTransform;
                                }
                            }
                            else
                            {
                                tmpTargetStruct.nowPointScript = tmpPointScript;
                                tmpTargetStruct.myTarget       = enemySoldierObjs[i].gameObject;
                                tmpTargetStruct.goPos          = tmpTransform;
                            }
                        }
                    }
                }
            }
            if (tmpTargetStruct.myTarget != null)
            {
                return(tmpTargetStruct);
            }
        }

        //塔
        if (towerAmount != 0)
        {
            for (int i = 0; i < towerAmount; i++)
            {
                if (Vector3.SqrMagnitude(enemyTowerObjs[i].transform.position - _soldierScript.transform.position) < _soldierScript.viewRadius * _soldierScript.viewRadius)
                {
                    tmpPointScript = enemyTowerObjs[i].MyCreatPoints;
                    if (!tmpPointScript.CheckFull(_soldierScript.enemyData.atk_Range))
                    {
                        tmpTransform = tmpPointScript.FindClosePoint(_soldierScript.enemyData.atk_Range, _soldierScript.transform, _soldierScript.enemyData.width);
                        if (tmpTransform != null)
                        {
                            if (tmpTargetStruct.myTarget != null)
                            {
                                if (Vector3.SqrMagnitude(enemyTowerObjs[i].transform.position - _soldierScript.transform.position) < Vector3.SqrMagnitude(tmpTargetStruct.myTarget.transform.position - _soldierScript.transform.position))
                                {
                                    tmpTargetStruct.nowPointScript = tmpPointScript;
                                    tmpTargetStruct.myTarget       = enemyTowerObjs[i].gameObject;
                                    tmpTargetStruct.goPos          = tmpTransform;
                                }
                            }
                            else
                            {
                                tmpTargetStruct.nowPointScript = tmpPointScript;
                                tmpTargetStruct.myTarget       = enemyTowerObjs[i].gameObject;
                                tmpTargetStruct.goPos          = tmpTransform;
                            }
                        }
                    }
                }
            }
            if (tmpTargetStruct.myTarget != null)
            {
                return(tmpTargetStruct);
            }
        }

        return(tmpTargetStruct);
    }
Example #8
0
    //優先攻擊塔(除了反擊不會打玩家)
    public myCorrectTarget CalculationDis_Tower(EnemyControl _soldierScript)
    {
        tmpTargetStruct.myTarget = null;
        tmpTargetStruct.goPos    = null;

        //核心 ??

        //塔
        if (towerAmount != 0)
        {
            for (int i = 0; i < towerAmount; i++)
            {
                if (Vector3.SqrMagnitude(enemyTowerObjs[i].transform.position - _soldierScript.transform.position) < _soldierScript.viewRadius * _soldierScript.viewRadius)
                {
                    tmpPointScript = enemyTowerObjs[i].MyCreatPoints;
                    if (!tmpPointScript.CheckFull(_soldierScript.enemyData.atk_Range))
                    {
                        tmpTransform = tmpPointScript.FindClosePoint(_soldierScript.enemyData.atk_Range, _soldierScript.transform, _soldierScript.enemyData.width);
                        if (tmpTransform != null)
                        {
                            if (tmpTargetStruct.myTarget != null)
                            {
                                if (Vector3.SqrMagnitude(enemyTowerObjs[i].transform.position - _soldierScript.transform.position) < Vector3.SqrMagnitude(tmpTargetStruct.myTarget.transform.position - _soldierScript.transform.position))
                                {
                                    tmpTargetStruct.nowPointScript = tmpPointScript;
                                    tmpTargetStruct.myTarget       = enemyTowerObjs[i].gameObject;
                                    tmpTargetStruct.goPos          = tmpTransform;
                                }
                            }
                            else
                            {
                                tmpTargetStruct.nowPointScript = tmpPointScript;
                                tmpTargetStruct.myTarget       = enemyTowerObjs[i].gameObject;
                                tmpTargetStruct.goPos          = tmpTransform;
                            }
                        }
                    }
                }
            }

            if (tmpTargetStruct.myTarget != null)
            {
                return(tmpTargetStruct);
            }
        }

        //士兵
        if (soldierAmount != 0)
        {
            for (int i = 0; i < soldierAmount; i++)
            {
                if (Vector3.SqrMagnitude(enemySoldierObjs[i].transform.position - _soldierScript.transform.position) < _soldierScript.viewRadius * _soldierScript.viewRadius)
                {
                    tmpPointScript = enemySoldierObjs[i].myCreatPoints;
                    if (!tmpPointScript.CheckFull(_soldierScript.enemyData.atk_Range))
                    {
                        tmpTransform = tmpPointScript.FindClosePoint(_soldierScript.enemyData.atk_Range, _soldierScript.transform, _soldierScript.enemyData.width);
                        if (tmpTransform != null)
                        {
                            if (tmpTargetStruct.myTarget != null)
                            {
                                if (Vector3.SqrMagnitude(enemySoldierObjs[i].transform.position - _soldierScript.transform.position) < Vector3.SqrMagnitude(tmpTargetStruct.myTarget.transform.position - _soldierScript.transform.position))
                                {
                                    tmpTargetStruct.nowPointScript = tmpPointScript;
                                    tmpTargetStruct.myTarget       = enemySoldierObjs[i].gameObject;
                                    tmpTargetStruct.goPos          = tmpTransform;
                                }
                            }
                            else
                            {
                                tmpTargetStruct.nowPointScript = tmpPointScript;
                                tmpTargetStruct.myTarget       = enemySoldierObjs[i].gameObject;
                                tmpTargetStruct.goPos          = tmpTransform;
                            }
                        }
                    }
                }
            }
            if (tmpTargetStruct.myTarget != null)
            {
                return(tmpTargetStruct);
            }
        }

        return(tmpTargetStruct);
    }