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; } } }
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; } }