Пример #1
0
    public void Update()
    {
        if (state == AIState.run)
        {
            //寻找敌人
            List <InGameBaseObj> objlist = InGameManager.GetInstance().inGameObjManager.objList;

            for (int i = 0; i < objlist.Count; i++)
            {
                if (objlist[i].GetObjType() != InGameBaseObj.enObjType.character)
                {
                    continue;
                }
                if (character.IsEnemy(objlist[i]))
                {
                    if (Vector2.Distance(objlist[i].transform.position, this.character.transform.position) < 4f)
                    {
                        character.StartAtk((InGameBaseCharacter)objlist[i]);
                        state     = AIState.atk;
                        fllowTime = 0f;
                        break;
                    }
                }
            }
        }
        else
        {
            if (character == null || character.actionManager.target == null || character.actionManager.target.IsDie())
            {
                state = AIState.run;
                character.StopAction();
                return;
            }

            fllowTime += Time.deltaTime;
            if (Vector2.Distance(character.actionManager.target.transform.position, this.character.transform.position) > 4f &&
                fllowTime > 5f)
            {
                state = AIState.run;
                //character.StopRun();
                character.StopAction();
                fllowTime = 0f;
            }
        }
    }
Пример #2
0
    public override void HandleEvent(EventData resp)
    {
        if (role.IsDie()) return;
        switch (resp.eid)
        {
            case EventID.EVENT_GAME_TOUCH_GROUND:
                EventGameTouchGround eve = (EventGameTouchGround)resp;

                role.StartRun(eve.pos);
                break;
            case EventID.EVENT_GAME_TOUCH_OBJ:
                EventData touchobje = (EventData)resp;
                InGameBaseObj obj = (InGameBaseObj) touchobje.sUserData[0];

                if (obj.instanceId != role.instanceId && !obj.IsDie())
                {
                    role.StartAtk(obj);
                }

                break;
            case EventID.EVENT_UI_EQUIP:
                int instanceid = int.Parse(resp.sUserData[0].ToString());
                AddEquip(instanceid);
                EventData.CreateEvent(EventID.EVENT_UI_REFRESH_PACKAGEUI).Send();
                break;
            case EventID.EVENT_UI_DELEQUIP:
                int delinstanceid = int.Parse(resp.sUserData[0].ToString());
                UserDataManager.instance.DelEquip(delinstanceid);
                EventData.CreateEvent(EventID.EVENT_UI_REFRESH_PACKAGEUI).Send();
                break;

            case EventID.EVENT_UI_UNEQUIP:
                int unequipinstanceid = int.Parse(resp.sUserData[0].ToString());
                CancelEquip(unequipinstanceid);
                break;

            case EventID.EVENT_DATA_REFRESHPROPERTY:
                role.ResetAllProperty();
                break;
        }

    }