Example #1
0
        /// <summary>
        ///
        /// </summary>
        void UpdateMoveState()
        {
            if (ctrlType != ECtrlType.Mount || Entity.skEntity.IsSkillRunning())
            {
                return;
            }

            if (m_Move == null)
            {
                return;
            }

            //if(PeInput.Get(PeInput.LogicFunction.InteractWithItem) && null != SelectItem_N.Instance && SelectItem_N.Instance.HaveOpItem())

            //计算移动方向
            Vector3 moveDirLocal = PeInput.GetAxisH() * Vector3.right + PeInput.GetAxisV() * Vector3.forward;

            m_MoveDir = Vector3.ProjectOnPlane(PETools.PEUtil.MainCamTransform.rotation * moveDirLocal, Vector3.up);

            //计算行走速度
            if (PeInput.Get(PeInput.LogicFunction.SwitchWalkRun))
            {
                m_MoveWalk = !m_MoveWalk;
            }
            SpeedState state = m_MoveWalk ? SpeedState.Walk : SpeedState.Run;

            if (PeInput.Get(PeInput.LogicFunction.Sprint) && Entity.GetAttribute(AttribType.SprintSpeed) > 0)
            {
                state = SpeedState.Sprint;
            }

            //移动
            m_Move.Move(m_MoveDir.normalized, state);


            //跳跃
            if ((m_SkillData.canSpace() || m_SkillData.canProunce()) && PeInput.Get(PeInput.LogicFunction.Jump))
            {
                Jump();
            }

            //左键攻击
            if (m_SkillData.canAttack() && PeInput.Get(PeInput.LogicFunction.Attack))
            {
                AttackL();
            }
            //右键攻击:还需要定义右键攻击逻辑键
            //if (PeInput.Get(PeInput.LogicFunction.Item_Use))
            //    AttackR();
        }