void PlayerSkillRealease() { cdImg.fillAmount = 1.0f; isCDing = true; MyEventSystem.Dispatch(EventsNames.addPlayerSkillTrigger, selfState); StartCoroutine(PlayerSkillTriggerCoolDown()); }
//设置技能效果对象属性 void SetPlayerSkillEffectData(GameObject skillEffecGo) { if (skillEffecGo != null) { //怪物掉血 int i = (int)selfState; if (0 <= i - 4 && i - 4 < PlayerSkillModel.Instance.skillList.Count) { MyEventSystem.Dispatch(EventsNames.updateMonsterHp, PlayerSkillModel.Instance.skillList[i - 4].Damage); } if (target != null) { skillEffecGo.transform.position = target.transform.position + Vector3.up; skillEffecGo.transform.LookAt(target.transform); } else { skillEffecGo.transform.position = transform.position + transform.forward; } if (skillEffectManager == null) { skillEffectManager = new GameObject(); skillEffectManager.name = "[PlayerSkillTriggerEffects]"; } if (skillEffecGo.transform.parent != skillEffectManager.transform) { skillEffecGo.transform.SetParent(skillEffectManager.transform); } } }
public void DoDamageToPlayer() { if (TargetPlayer != null && selfMonster != null) { PlayerController script = TargetPlayer.GetComponent <PlayerController>(); MyEventSystem.Dispatch(EventsNames.updatePlayerHp, -selfMonster.atk); } }
void UpdateTaskData() { if (curTask != null) { curTask.completion++; if (curTask.IsDone) { MyEventSystem.Dispatch(EventsNames.completeTask); } } }
public void DealWithDeath() { if (selfMonster == null) { return; } MyEventSystem.Dispatch(EventsNames.updatePlayerExp, selfMonster.maxHp); MyEventSystem.Dispatch(EventsNames.completeTask); Destroy(gameObject); }
public void AddProp(PropVo prop) { for (int i = 0; i < bagInfoList.Count; i++) { if (prop.id == bagInfoList[i].id && bagInfoList[i].num < prop.max_num) { bagInfoList[i].num++; return; } } MyEventSystem.Dispatch(EventsNames.addProp, prop); }
public void AddCharacter(string name, int occupation, int server, int sex, int level = 1) { //创建玩家类 Player player = PlayerFactory.GeneratePlayer((OccupationType)occupation, name); //找到账号路径并添加角色信息 XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(playerInfoPath); XmlNode root = xmlDoc.SelectSingleNode("root"); XmlElement character = xmlDoc.CreateElement("character"); character.SetAttribute("name", name); character.SetAttribute("level", level.ToString()); character.SetAttribute("exp", player.Exp.ToString()); character.SetAttribute("server", server.ToString()); character.SetAttribute("sex", sex.ToString()); character.SetAttribute("money", player.Money.ToString()); character.SetAttribute("occupation", occupation.ToString()); character.SetAttribute("hp", player.Hp.ToString()); character.SetAttribute("maxHp", player.MaxHp.ToString()); character.SetAttribute("mp", player.Mp.ToString()); character.SetAttribute("maxMp", player.MaxMp.ToString()); character.SetAttribute("atk", player.Atk.ToString()); character.SetAttribute("def", player.Def.ToString()); character.SetAttribute("strength", player.Strength.ToString()); character.SetAttribute("intelligence", player.Intelligence.ToString()); character.SetAttribute("magicPower", player.MagicPower.ToString()); character.SetAttribute("agility", player.Agility.ToString()); root.AppendChild(character); player.SetData(character); //添加进容器 characterInfoList.Add(player); xmlDoc.Save(playerInfoPath); MyEventSystem.Dispatch(EventsNames.updateCharacter); }
public override void UseEffect() { //发送加血信息 MyEventSystem.Dispatch(EventsNames.updatePlayerHp, hp); }
void AcceptTask() { MyEventSystem.Dispatch(EventsNames.setTaskdata, curTask); OnExit(); }
public void Selected() { MyEventSystem.Dispatch(EventsNames.setPlayerAttackTarget, gameObject); print("目标选中"); }
// Update is called once per frame void Update() { //更新玩家数据模型中的位置信息 selfPlayer.pos = transform.position; //释放技能 PlayerSkillTrigger(); if (Input.GetMouseButtonDown(0)) { //射线和UI碰撞 if (EventSystem.current.IsPointerOverGameObject()) { return; } Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; if (Physics.Raycast(ray, out hit)) { if (hit.collider.tag == "Ground") { desPos = hit.point; //生成点击效果预制物 if (clickEffectGo == null) { GameObject go = ResourceManager.Instance.Load("Effect_Prefeb/Efx_Click_Red"); clickEffectGo = Instantiate(go); } clickEffectGo.transform.position = hit.point; agent.Resume(); agent.destination = hit.point; //停止技能释放 //skillQueue.Clear(); selfState = PlayerState.AutoWalk; MyEventSystem.Dispatch(EventsNames.cannotRotatePlayer); } else if (hit.collider.tag == "NPC01") { UIManager.Instance.LoadUI(UIPanelType.chat); } else if (hit.collider.tag == "Monster") { target = hit.collider.gameObject; } } } else { Check(); } if (selfState == PlayerState.AutoWalk) { animator.SetInteger(AnimatorHashIds.playserState, (int)PlayerState.Run); AutoMove(speed * 1.5f); } else { animator.SetInteger(AnimatorHashIds.playserState, (int)selfState); } //重置状态 ResetState(); }
void ResetState() { switch (selfState) { case PlayerState.Idle: break; case PlayerState.Walk: case PlayerState.Run: isPlayerSkillPlaying = false; timer += Time.deltaTime; if (timer >= animator.GetCurrentAnimatorStateInfo(0).length / 4) { timer = 0; selfState = PlayerState.Idle; } break; case PlayerState.Attack1: case PlayerState.Attack2: case PlayerState.Attack3: case PlayerState.Attack4: timer += Time.deltaTime; if (timer >= animator.GetCurrentAnimatorStateInfo(0).length) { timer = 0; isPlayerSkillPlaying = false; if (skillQueue.Count == 0) { selfState = PlayerState.Idle; animator.CrossFade(selfState.ToString(), 0.2f, 0); } } else { isPlayerSkillPlaying = true; } break; case PlayerState.Hit: case PlayerState.Dodge: case PlayerState.Defence: isPlayerSkillPlaying = false; timer += Time.deltaTime; if (timer >= animator.GetCurrentAnimatorStateInfo(0).length) { timer = 0; selfState = PlayerState.Idle; } break; case PlayerState.Die: break; case PlayerState.AutoWalk: isPlayerSkillPlaying = false; return; default: break; } if (selfState == PlayerState.Idle) { MyEventSystem.Dispatch(EventsNames.cannotRotatePlayer); } }
void Check() { #region 行走 if (Input.GetKey(KeyCode.W)) { //停止自动寻路和技能释放 agent.Stop(); transform.position += transform.forward * speed * Time.deltaTime; selfState = PlayerState.Walk; MyEventSystem.Dispatch(EventsNames.canRotatePlayer); } else if (Input.GetKey(KeyCode.S)) { //停止自动寻路和技能释放 agent.Stop(); transform.position -= transform.forward * speed * Time.deltaTime; selfState = PlayerState.Walk; MyEventSystem.Dispatch(EventsNames.canRotatePlayer); } else if (Input.GetKey(KeyCode.A)) { //停止自动寻路和技能释放 agent.Stop(); transform.position -= transform.right * speed * Time.deltaTime; transform.Rotate(-Vector3.up * angularSpeed * Time.deltaTime); selfState = PlayerState.Walk; MyEventSystem.Dispatch(EventsNames.canRotatePlayer); } else if (Input.GetKey(KeyCode.D)) { //停止自动寻路和技能释放 agent.Stop(); transform.position += transform.right * speed * Time.deltaTime; selfState = PlayerState.Walk; MyEventSystem.Dispatch(EventsNames.canRotatePlayer); } #endregion #region 奔跑 if (Input.GetKey(KeyCode.W) && Input.GetKey(KeyCode.LeftShift)) { //停止自动寻路和技能释放 agent.Stop(); transform.position += transform.forward * speed * 1.5f * Time.deltaTime; selfState = PlayerState.Run; MyEventSystem.Dispatch(EventsNames.canRotatePlayer); } else if (Input.GetKey(KeyCode.S) && Input.GetKey(KeyCode.LeftShift)) { //停止自动寻路和技能释放 agent.Stop(); transform.position -= transform.forward * speed * 1.5f * Time.deltaTime; selfState = PlayerState.Run; MyEventSystem.Dispatch(EventsNames.canRotatePlayer); } #endregion }