Exemplo n.º 1
0
            private void Awake()
            {
                mobileCtrl = GetComponent <MobileCtrl>();
                mouseCtrl  = GetComponent <MouseCtrl>();

                CtrlChange();
            }
Exemplo n.º 2
0
    /// <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: 键盘指令
            }
        }
Exemplo n.º 4
0
    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);
    }
Exemplo n.º 5
0
 public void OnDestroy()
 {
     //switchToState(MouseState.UIControl);
     //Screen.lockCursor = false;
     //if (m_autoMoveEffectParam != null)
     //    SceneEffectManager.Instance.DestroySceneEffect(ref m_autoMoveEffectParam);
     LockCursor = false;
     Instance   = null;
 }
Exemplo n.º 6
0
    // 小地图点击事件
    //  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;
        }
    }
Exemplo n.º 7
0
 public void SetMouseAttachType(int attachType)
 {
     if (EntityFactory.MainHero != null)
     {
         MouseCtrl mouseCtrl = EntityFactory.MainHero.GetComponentInChildren <MouseCtrl>();
         if (mouseCtrl != null)
         {
             mouseCtrl.SetAttachType((MouseAttachFuncType)attachType);
         }
     }
 }
Exemplo n.º 8
0
 private void OnSkinChangedLoacl()
 {
     //关闭玩家控制输入***
     MainSkillCtrl        = MainHerpObj.GetComponent <SkillCtrl>();
     MainSkillCtrl.enable = false;
     //关闭玩家鼠标输入***
     MainMouseCtrl         = MainHerpObj.GetComponent <MouseCtrl>();
     MainMouseCtrl.enabled = false;
     //想要播放动画
     PlayBattleMovie();
     MainHerpObj.SetActive(false);
 }
Exemplo n.º 9
0
 //获取玩家鼠标操作
 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);
 }
Exemplo n.º 10
0
        /// <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);
        }
Exemplo n.º 11
0
 public void Awake()
 {
     Instance = this;
 }
Exemplo n.º 12
0
    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;
        }
    }