private void Awake() { mobileCtrl = GetComponent <MobileCtrl>(); mouseCtrl = GetComponent <MouseCtrl>(); CtrlChange(); }
/// <summary> /// 开头动画播放完成回调 /// </summary> public void OnMovieFinished() { //开启所有已生成 if (MainHerpEv != null) { MainHerpObj.SetActive(true); MainHerpObj = null; MainHerpEv = null; } //开启玩家控制输入*** if (MainSkillCtrl != null) { MainSkillCtrl.enable = true; MainSkillCtrl = null; } if (MainMouseCtrl != null) { MainMouseCtrl.enabled = true; MainMouseCtrl = null; } if (m_SkinControl != null) { //m_SkinControl.UnRegsiterSkinChangedEvent(OnSkinChanged); m_SkinControl = null; } LogicDataCenter.onEnterBattleState(); //UISystem.Instance.SendWndMessage(WndMsgID.WND_MSG_COMMON_BATTLESTATE_ENTER, null); //EntityFactory.CreateMainHeroEntityEvent -= OnHeroEntityLoadComplete; //MainHerpEv.LightingEffectManager.UnRegisterEffectComplete(333, OnMovieFinished); //开启音效 //开启光效 }
public override void run() { HIDCommand hidCommand = null; if (!commands.TryDequeue(out hidCommand)) { return; } if (hidCommand is MouseCommand) { MouseCommand cmd = (MouseCommand)hidCommand; // if (cmd.eventType == MouseCommand.MOUSE_MOVE) MouseCtrl.mouseMove(cmd.x, cmd.y); if (cmd.eventType == MouseCommand.MOUSE_DOWN) { MouseCtrl.mouseDown(cmd.x, cmd.y, cmd.key); } else if (cmd.eventType == MouseCommand.MOUSE_UP) { MouseCtrl.mouseUp(cmd.x, cmd.y, cmd.key); } else if (cmd.eventType == MouseCommand.MOUSE_WHEEL) { MouseCtrl.mouseScroll(cmd.x, cmd.y, cmd.key); } } else if (hidCommand is KeyboardCommand) { // TODO: 键盘指令 } }
public bool Reset(bool isForce, bool smoothblend = true) { if (isForce) { isInit = false; } if (isInit) { return(true); } if (target == null) { return(false); } if (CurCameraProperty == null || CurCameraProperty.configType == 0) { CurCameraProperty = gameObject.GetComponent <CameraProperty>(); if (CurCameraProperty == null)// || soldierController == null || mouseCtrl==null) { Trace.LogError("摄像机获取CameraProperty组件"); return(false); } CurCameraProperty.SpeedScale = ASpeedGame.Data.GameSettingConfig.GameSettingConfig.Instance.GetGameSettingFloatValue(ASpeedGame.Data.GameSettingConfig.GameSettingIndex.CameraSpeed); } if (soldier == null || !soldier.gameObject || EntityFactory.MainHero == null) { return(false); } target.parent = null; soldierController = EntityFactory.MainHero.GetComponent <SoldierController>(); mouseCtrl = EntityFactory.MainHero.GetComponent <MouseCtrl>(); if (!m_Camera) { m_Camera = Initialize.mainCam; } camTransform = m_Camera.transform; if (camCtrl != null) { camCtrl.Reset(CurCameraProperty, smoothblend); if (!smoothblend) { apprTran = m_userCurTran; apprFov = m_userCurFov; apprDistance = m_userCurDistance; } } if (EntityFactory.MainHeroView != null && EntityFactory.MainHeroView.Property != null) { isInit = true; return(true); } return(false); }
public void OnDestroy() { //switchToState(MouseState.UIControl); //Screen.lockCursor = false; //if (m_autoMoveEffectParam != null) // SceneEffectManager.Instance.DestroySceneEffect(ref m_autoMoveEffectParam); LockCursor = false; Instance = null; }
// 小地图点击事件 // yPos忽略,只是为了凑参数个数 // opCode: 0-进攻信号 1-撤退信号 2-上帝视角 3-寻路 public void OnMinimapClick(float xPos, float yPos, float zPos, int opCode) { Vector3 vec3Pos = new Vector3(xPos, yPos, zPos); SendMinimapClickPosToSkillCtrl(vec3Pos); // 进攻撤退信号 if (EntityFactory.MainHero != null) { MouseCtrl mouseCtrl = EntityFactory.MainHero.GetComponentInChildren <MouseCtrl>(); if (mouseCtrl != null) { if (opCode != (int)EMinimapClickType.EMCT_GodEyeMove) { if (mouseCtrl.OnMinimapClick(xPos, yPos, zPos)) { return; } } else if (mouseCtrl.IsTeamCommandStart()) { // 拖信息标示UI时屏蔽上帝视角消息 MyInvokeQ._Invoke("CancelGodEyeMove"); return; } } } // 进入上帝视角 if (opCode == (int)EMinimapClickType.EMCT_GodEyeMode || opCode == (int)EMinimapClickType.EMCT_GodEyeMove) { // 如果角色处于战斗状态,不能进上帝视角 if (EntityViewCommandHandler.mainHeroState == 3) { GameUtil.ShowSystemMessage(EMChatTipID.CHAT_TIP_WAR_CHANGE_GODEYE_IN_BATTLE); return; } GodEyeByMainHero(vec3Pos); return; } // 寻路 if (opCode == (int)EMinimapClickType.EMCT_Navigate) { BaseStateMachine sm = EntityFactory.MainHero.GetComponent <BaseStateMachine>(); if (sm != null) { // 需要确定一下y。 todo sm.AutoMoveTo(vec3Pos); } return; } }
public void SetMouseAttachType(int attachType) { if (EntityFactory.MainHero != null) { MouseCtrl mouseCtrl = EntityFactory.MainHero.GetComponentInChildren <MouseCtrl>(); if (mouseCtrl != null) { mouseCtrl.SetAttachType((MouseAttachFuncType)attachType); } } }
private void OnSkinChangedLoacl() { //关闭玩家控制输入*** MainSkillCtrl = MainHerpObj.GetComponent <SkillCtrl>(); MainSkillCtrl.enable = false; //关闭玩家鼠标输入*** MainMouseCtrl = MainHerpObj.GetComponent <MouseCtrl>(); MainMouseCtrl.enabled = false; //想要播放动画 PlayBattleMovie(); MainHerpObj.SetActive(false); }
//获取玩家鼠标操作 private bool InitHeroCtrl() { if (MyHeroMouseCtrl == null && EntityFactory.MainHeroID != 0) { GameObject mainHeroGO = EntityFactory.getEntityGameObjectByID(EntityFactory.MainHeroID); if (mainHeroGO == null) { Trace.LogWarning("获取主英雄失败 英雄ID:" + EntityFactory.MainHeroID); } else { MyHeroMouseCtrl = mainHeroGO.GetComponent <MouseCtrl>(); } } return(MyHeroMouseCtrl == null ? false : true); }
/// <summary> /// 绑定主角组件 /// </summary> /// <returns></returns> private bool BindHeroComponent() { Trace.Log("BindHeroComponent() -> Hero, id=" + ID.ToString()); CreatureProperty property = this.Property; BaseStateMachine fsm = this.StateMachine; if (property == null || fsm == null) { Trace.Log("BindHeroComponent failed. CreatureProperty==null or BaseStateMachine == null !!!"); return(false); } m_gameObject.layer = LayerMask.NameToLayer(Config.LayerHero); fsm.baseLayer = LayerMask.NameToLayer(Config.LayerHero); fsm.pickableCount = 1; fsm.isNotAttack = false; MouseCtrl mousectrl = m_gameObject.GetComponent <MouseCtrl>(); if (mousectrl == null) { mousectrl = m_gameObject.AddComponent <MouseCtrl>(); } m_DynamicCommopnent.AddLast(mousectrl); SkillCtrl skillctrl = m_gameObject.GetComponent <SkillCtrl>(); if (skillctrl == null) { skillctrl = m_gameObject.AddComponent <SkillCtrl>(); skillctrl.resetOrderset(0);//property.SkillOrderSetName); } m_DynamicCommopnent.AddLast(skillctrl); ScreenRaycast raycast = m_gameObject.GetComponent <ScreenRaycast>(); if (raycast == null) { raycast = m_gameObject.AddComponent <ScreenRaycast>(); } m_DynamicCommopnent.AddLast(raycast); fsm.isHero = true; fsm.canControl = true; SoldierController soliderController = m_gameObject.GetComponent <SoldierController>(); if (soliderController == null) { soliderController = m_gameObject.AddComponent <SoldierController>(); } m_DynamicCommopnent.AddLast(soliderController); if (StageManager.Instance.CurPermissionState == EStage_PermissionState.ESPS_OB) { OBController obController = m_gameObject.GetComponent <OBController>(); if (obController == null) { obController = m_gameObject.AddComponent <OBController>(); } m_DynamicCommopnent.AddLast(obController); } fsm.maxRunForwardSpeed = property.runSpeed_Forward; fsm.maxRunBackwardSpeed = property.runSpeed_Back; fsm.maxRunSidewaySpeed = property.runSpeed_LeftRight; //ScreenCastLayer screenCastLayer = m_gameObject.GetComponent<ScreenCastLayer>(); //if (screenCastLayer != null) //{ // screenCastLayer.setHero(true); // GameObject.ResNode.DestroyRes(ref screenCastLayer); //} return(true); }
public void Awake() { Instance = this; }
void RotateByCamera() { if (bindSoldierCamera == null || m_pFSM == null || !m_pFSM.SkinConfig || !bindSoldierCamera.CurrentCamera) { return; } Transform tcam = bindSoldierCamera.CurrentCamera.transform; m_pFSM.inputMoveDirection = new Vector3(0, 0, 0); m_pFSM.rawInputMoveDirection = tcam.TransformDirection(inputDir); if (dead == true) //被各种控制着不动角色 { return; } if (!m_pFSM.SkinConfig.RootAReplace && m_pFSM.animatorCtrl.bDoingAttackMove)//不能移动 { return; } float mode = controlmode; if (m_pFSM.isFloating()) { mode = 3; } bool freerotate = false; MouseCtrl mouseCtrl = MouseCtrl.Instance; if (mouseCtrl != null) { freerotate = SoldierCamera.MainInstance().cameraMode == CameraMode.FPSMode; } if (m_pFSM.animatorCtrl.ana && m_pFSM.animatorCtrl.ana.isInitialized) { m_pFSM.animatorCtrl.ana.SetBool(hashid_frontMode, !(mode == 2 || (mode == 1 && freerotate))); //if (SoldierCamera.MainInstance<SoldierCamera>().cameraMode == SoldierCamera.CameraControlMode.FPSMode) //{ // m_pFSM.animatorCtrl.ana.SetBool(hashid_frontMode,false); //} } if (mode == 1) { desireAngle.x = 0.0f; desireAngle.z = 0.0f; if (moveDir.sqrMagnitude > 0.001f || freerotate) { Vector3 baseright = tcam.right; Vector3 baseup = tcam.up; Vector3 baseforward = tcam.forward; Vector3 worlddir = (moveDir.x * baseright + moveDir.z * baseforward); worlddir.y = 0.0f; worlddir = worlddir.normalized; if (canRotate()) //bSkillingPauseRotate状态下不随镜头转角度 { if (freerotate) { desireAngle.y = Mathf.LerpAngle(desireAngle.y, tcam.eulerAngles.y, 0.5f); } else { desireAngle = Vector3.zero; desireAngle.y = Mathf.Atan2(worlddir.x, worlddir.z) / Mathf.PI * 180.0f; } } m_pFSM.inputMoveDirection = tcam.TransformDirection(moveDir); } } else if (mode == 2) { desireAngle.x = 0.0f; desireAngle.z = 0.0f; if (canRotate()) { if (sr == null) { sr = GetComponent <ScreenRaycast>(); } //在做攻击动作的时候不随鼠标转向,此功能于2016年5月10日期屏蔽(陈伍宏) //if ((!m_pFSM.animatorCtrl.bAnimatorAttack) && ((sr != null) && (sr.targetObject != gameObject))) if ((sr != null) && (sr.targetObject != gameObject)) { //mode2的时候选中自己就不转了,不然会原地旋转 Vector3 worlddir = sr.targetPos - gameObject.transform.position; if (worlddir != Vector3.zero) { desireAngle = Vector3.zero; desireAngle.y = Mathf.Atan2(worlddir.x, worlddir.z) / Mathf.PI * 180.0f; } } } m_pFSM.inputMoveDirection = tcam.TransformDirection(moveDir); } else { desireAngle = tcam.eulerAngles; m_pFSM.inputMoveDirection = tcam.TransformDirection(moveDir); Vector3 oldVel = m_pFSM.getVelocity(); Vector3 newVel = m_pFSM.inputMoveDirection * oldVel.magnitude; float sinAngle = -Vector3.Dot(newVel, transform.right); if (sinAngle > 0.8f) { sinAngle = 0.8f; } if (sinAngle < -0.8f) { sinAngle = -0.8f; } float deltaAngle = Mathf.Asin(sinAngle) / Mathf.PI * 180.0f; desireAngle.z = deltaAngle; } }