void PlayerSkillRealease()
 {
     cdImg.fillAmount = 1.0f;
     isCDing          = true;
     MyEventSystem.Dispatch(EventsNames.addPlayerSkillTrigger, selfState);
     StartCoroutine(PlayerSkillTriggerCoolDown());
 }
Example #2
0
    //设置技能效果对象属性
    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);
     }
 }
Example #4
0
 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);
    }
Example #6
0
    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);
    }
Example #7
0
    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);
    }
Example #8
0
 public override void UseEffect()
 {
     //发送加血信息
     MyEventSystem.Dispatch(EventsNames.updatePlayerHp, hp);
 }
Example #9
0
 void AcceptTask()
 {
     MyEventSystem.Dispatch(EventsNames.setTaskdata, curTask);
     OnExit();
 }
Example #10
0
 public void Selected()
 {
     MyEventSystem.Dispatch(EventsNames.setPlayerAttackTarget, gameObject);
     print("目标选中");
 }
Example #11
0
    // 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();
    }
Example #12
0
    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);
        }
    }
Example #13
0
    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
    }