Пример #1
0
 override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
 {
     base.OnStateEnter(animator, stateInfo, layerIndex);
     mainLayer  = 0; // animator.GetLayerIndex(csMainAniLayer);
     aniControl = animator.gameObject.transform.GetComponent <modelAnimatorControl>();
     aiControl  = animator.gameObject.transform.GetComponent <baseAI>();
 }
Пример #2
0
    public override void stateAttackEnd()
    {
        if (selPro == null)
        {
            roleProperty selPro = this.transform.GetComponent <roleProperty>();
        }

        if (enemyObj != null)
        {
            roleProperty enemyPro = enemyObj.transform.GetComponent <roleProperty>();
            int          Hp       = RoleDamageCal.instance.DamageCal(selPro, enemyPro);

            enemyPro.SubHpValue(Hp); //UI扣血显示
            if (enemyPro.hp <= 0)    //敌人死亡
            {
                baseAI enemyAI = enemyObj.transform.GetComponent <baseAI>();
                enemyAI.stateDieStart();
                //this.enemyObj = null;

                getNowNewEnemyFromLst();  //死亡,挑选新的敌人
            }

            if (enemyObj != null)
            {
                lookAtEnemy(this.gameObject, enemyObj);
            }
        }
        stateStandEnd();
    }
Пример #3
0
    //攻击->攻击(触发制,动作完成判断):双方相互攻击
    //攻击->待机(触发制,动作完成判断)
    public override void stateAttackEnd()
    {
        if (selPro == null)
        {
            roleProperty selPro = this.transform.GetComponent <roleProperty>();
        }

        if (enemyObj != null)
        {
            roleProperty enemyPro = enemyObj.transform.GetComponent <roleProperty>();
            int          Hp       = RoleDamageCal.instance.DamageCal(selPro, enemyPro);

            enemyPro.SubHpValue(Hp); //UI扣血显示
            if (enemyPro.hp <= 0)    //死亡
            {
                baseAI enemyAI = enemyObj.transform.GetComponent <baseAI>();
                enemyAI.stateDieStart(); //处理 对方死亡动画及结算
                this.enemyObj = null;
            }

            // getNowNewEnemyFromLst();
            if (enemyObj != null)
            {
                lookAtEnemy(this.gameObject, enemyObj);
            }
        }

        startSkillCD();

        /*
         * IbaseANI tmpAni = this.transform.GetComponent<monsterAniControl>();
         *
         * bool isAttack = tmpAni.attackStateEnd(); //伤害计算及UI显示,以及是否死亡的结算
         *
         * if (isAttack)
         * {
         *  tmpAni.PlayState(roleState.attack);
         * }
         * else
         * {
         *  tmpAni.PlayState(roleState.stand);
         * }*/
    }
Пример #4
0
    void inSubmit()
    {
        int i = 0;

        foreach (baseLocale locale in locales)
        {
            List <buildSlot> tempSlots = new List <buildSlot> ();

            foreach (Vector3 slot in locale.slots)
            {
                buildSlot temp = new buildSlot(slot);
                tempSlots.Add(temp);
            }

            foreach (Vector3 slot in locale.silo)
            {
                buildSlot temp = new buildSlot(slot);
                tempSlots.Add(temp);
            }

            foreach (Vector3 slot in locale.towers)
            {
                buildSlot temp = new buildSlot(slot);
                tempSlots.Add(temp);
            }

            baseAI outPost = new baseAI(locale.focal, tempSlots, i);
            outposts.Add(outPost);
            i++;
        }

        int d = 0;

        while (d < locales.Count)
        {
            //Debug.Log (Vector3.Distance (outposts [d].focal, AIseed.transform.position) + "outpost " + outposts[d].ID);
            d++;
        }

        eventManager.MapAI(playerID);
        _state = State.Idle;
    }
Пример #5
0
    /*
     * //下落中是否发生碰撞
     * public bool isJumpDownTouch {
     *   get;
     *   set;
     * }
     */

    public void initData(GameObject paraObj)
    {
        paraObj.GetComponent <Rigidbody>().freezeRotation = true;
        m_animationController = paraObj.GetComponent <Animation>();
        selfAI = this.transform.GetComponent <baseAI>();

        //设置播放速度,实际无效
        foreach (AnimationState state in m_animationController)
        {
            if ((state.name == csAttack1) || (state.name == csAttack2) || (state.name == csAttackEnd))
            {
                state.speed = csPlaySpeedTime;
            }
        }

        //oldRoleState = roleState.stand;
        //selfAI.oldRoleState = roleState.stand;

        PlayState(roleState.stand);
    }
Пример #6
0
 void Start()
 {
     selfAI       = this.transform.GetComponent <baseAI>();
     selfProperty = this.transform.GetComponent <roleProperty>();
 }
Пример #7
0
    GameObject checkBuild(int type, int ID)
    {
        /*
         * [*** Cheat Sheet ***]
         *
         * HQ - 1
         * Power Station - 2
         * Refinery - 3
         * Silo - 5
         * Recycling Depot - 6
         * Repair Depot - 7
         * GigaFactory - 8
         * Research Facility - 9
         * Aircraft Factory - 10
         * Wall - 11
         * Sentry Gun - 12
         * Gate - 15
         */

        if (mManager.structs [type].cost <= (rManager.resource [playerID] / 2))
        {
            eventManager.Spend(mManager.structs [type].cost, playerID);

            baseAI    outpost = Outposts [ID];
            buildSlot slot    = new buildSlot(transform.position);
            int       rand    = 1;
            int       R       = 20;

slot:

            if (type != 12 && type != 5)
            {
                rand = Random.Range(0, 8);
                slot = outpost.buildSlots [rand];
            }
            if (type == 5)
            {
                rand = Random.Range(8, 11);
                slot = outpost.buildSlots [rand];
            }
            if (type == 12)
            {
                rand = Random.Range(11, 15);
                slot = outpost.buildSlots [rand];
            }


            if (slot.state == false)
            {
                Debug.Log("Tried Build");
                Vector3    pos         = slot.point;
                Vector3    relativePos = outpost.focal - pos;
                Quaternion rot         = Quaternion.LookRotation(relativePos);
                GameObject temp        = Instantiate(mManager.structs [type].prefab, pos, rot);
                outpost.buildSlots [rand].state             = true;
                temp.GetComponent <buildLogic> ().playerID  = playerID;
                temp.GetComponent <buildLogic> ().outpostID = outpost.ID;

                Order buildOrder = new Order(Order.Type.Build, playerID, outpostIndex);
                buildOrder.unitTarget = temp;
                buildOrder.navTarget  = pos;

                eventManager.InitOrder(buildOrder, null, 0, playerID);

                return(temp);
            }
            else
            {
                Debug.Log("loopback slot");
                R--;
                if (type == 5)
                {
                    Debug.Log("Attempts Left: " + R);
                }
                if (R > 0)
                {
                    goto slot;
                }
                else
                {
                    return(null);
                }
            }
        }
        else
        {
            if (debugActive)
            {
                Debug.Log("Too Expensive" + " Cost:" + mManager.structs [type].cost + " Money:" + (rManager.resource [playerID] / 2));
            }
            return(null);
        }
    }
Пример #8
0
 void Start()
 {
     aiControl = this.transform.GetComponent <baseAI>();
 }