public float pickMovePointDisThread = 0.5f; //鼠标移动距离阈值,按下抬起的时间内累计位移不超过限制右键自动寻路有效 //private SceneEffectParamBase m_autoMoveEffectParam = new SceneEffectParamBase((int)ESceneEffectID.SE_Common_AutoMoveTargetPoint, null); private void updateFunction() { uint currentTick = GameLogicAPI.getTickCount(); //检测鼠标的动作,更新鼠标状态 //if (state == MouseState.HeroControl) //{ if (bPickingMovePoint) { Vector2 mouseAxis = new Vector2(fMouseAxisX, fMouseAxisY); pickingMoveDis += mouseAxis.magnitude; if (skillCtrl && !skillCtrl.enable) { bPickingMovePoint = false; //屏蔽技能操作时,右键寻路功能也关闭 } if ((skillCtrl && skillCtrl.isSelecting()) || pickingMoveDis > pickMovePointDisThread || currentTick > pickingMovePointEndTick) { bPickingMovePoint = false; } } if ((InputManager.GetMouseButtonUp(1)) && (bPickingMovePoint)) //右键寻路 { bPickingMovePoint = false; CreatureStateMachine stateMachine = transform.GetComponent <CreatureStateMachine>(); if (stateMachine != null) { Vector3 pickPos = Vector3.zero; Vector3 selectPoint = getMousePosition(); if (!UISystem.Instance.IsMouseOverUI()) { //执行了实体右键弹出菜单就不执行寻路 if (EntityRightMenu()) { return; } // TODO : 去除右键按场景地点自动寻路功能 //RaycastHit hitInfo; //Ray castRay = Initialize.mainCam.ScreenPointToRay(selectPoint); //int LayerMaskOnGournd = (1 << LayerMask.NameToLayer(Config.LayerDefault) | 1 << LayerMask.NameToLayer(Config.LayerBuilding)); //bool isHit = Physics.Raycast(castRay, out hitInfo, 100, LayerMaskOnGournd); //if (isHit) //{ // if (m_autoMoveEffectParam.ReturnComponent == null) // SceneEffectManager.Instance.CreateSceneEffect(ref m_autoMoveEffectParam); // { // m_autoMoveEffectParam.ReturnComponent.transform.position = hitInfo.point; // m_autoMoveEffectParam.ReturnComponent.ReplayEffect(); // } // stateMachine.AutoMoveTo(hitInfo.point, false); //} } } } else if (InputManager.GetMouseButtonDown(1) && GetAttachType() == (int)MouseAttachFuncType.None) { bPickingMovePoint = true; pickingMoveDis = 0.0f; pickingMovePointEndTick = currentTick + pickMovePointTickThread; } { CheckAttachFunc(); //应策划要求,暂时关闭Alt+鼠标标记地图功能 //if (InputManager.GetMouseButtonDown(0) && InputManager.GetKey(KeyCode.LeftAlt)) //{ // if (!UISystem.Instance.IsMouseOverUI()) // OnTeamCommand(true); //} //if (InputManager.GetMouseButtonUp(0) || InputManager.GetKeyUp(KeyCode.LeftAlt)) //{ // OnTeamCommand(false); //} if (m_currentAttachType != MouseAttachFuncType.None && InputManager.GetMouseButtonUp(0)) //左键插旗,抬键才算,不然会跟普通攻击冲突 { //GFxMinimap minimap = SFGFxMovieManager.Instance.GetWindow("GFxMinimap") as GFxMinimap; //if (minimap != null) { //如果点到UI上,则不插旗 if (!UISystem.Instance.IsMouseOverUI()) { Vector3 hitPoint = new Vector3(); if (MouseRaycastToGround(ref hitPoint)) { DoMouseAttachFunc(hitPoint.x, hitPoint.y, hitPoint.z); } } } } } switch (m_currentAttachType) { case MouseAttachFuncType.CtrlAttackSign: MouseCursorManager.Instance.MouseCursorType = EMouseCursorType.MCT_MouseAttack; break; case MouseAttachFuncType.AltAttackSign: MouseCursorManager.Instance.MouseCursorType = EMouseCursorType.MCT_MouseAttack; break; case MouseAttachFuncType.RetreatSign: MouseCursorManager.Instance.MouseCursorType = EMouseCursorType.MCT_MouseSign; break; default: if (MouseCursorManager.Instance.MouseCursorType == EMouseCursorType.MCT_MouseAttack || MouseCursorManager.Instance.MouseCursorType == EMouseCursorType.MCT_MouseSign) { MouseCursorManager.Instance.MouseCursorType = EMouseCursorType.MCT_Normal; } break; } // AICommand模块 if (InputManager.GetMouseButtonDown(0) && InputManager.GetKey(KeyCode.X)) { if (!UISystem.Instance.IsMouseOverUI()) { OnAICommand(); } } if (!RotateWithMouse) { if (LockCursor && !InputManager.GetMouseButton(1)) { LockCursor = false; } else if (!LockCursor && InputManager.GetMouseButton(1) && !UISystem.Instance.IsMouseOverUI()) { LockCursor = true; } } }