예제 #1
0
        /// <summary>
        ///     战斗AI行为,如果攻击范围内有怪物则进行攻击
        /// </summary>
        private void AiAttackBehaviour()
        {
            SysMapVo vo = BaseDataMgr.instance.GetMapVo(AppMap.Instance.mapParser.MapId);

            //副本里面的玩家的自动攻击
            if (vo.type == MapTypeConst.COPY_MAP)
            {
                IEnumerable <ActionDisplay> enemyList = GetEnemyDisplay();
                foreach (ActionDisplay display in enemyList)
                {
                    var baseRoleVo = display.GetVo() as BaseRoleVo;
                    if (baseRoleVo != null && baseRoleVo.CurHp <= 0)
                    {
                        continue;
                    }
                    if (display.Controller == null)
                    {
                        continue;
                    }
                    if (Mathf.Abs(display.Controller.transform.position.x - MeController.transform.position.x) <= 1.4 &&
                        Mathf.Abs(display.Controller.transform.position.y - MeController.transform.position.y) <= 0.4)
                    {
                        var attackVo = new ActionVo
                        {
                            ActionType  = Actions.ATTACK,
                            TargetPoint = display.GoBase.transform.position
                        };
                        StartCoroutine(YieldSecordsAutoAttack(0.5f, attackVo));
                        break;
                    }
                }
            }
        }
예제 #2
0
        /**加载地图
         * @param MapId  加载地图ID
         * @param mapUrl 地图资源地址
         * **/

        public void LoadMap(uint mapId)
        {
            Log.info(this, "-loadMap()设置MapParser里的isChange为true并更新mapId");
            IsChange = true;
            MapId    = mapId;
            Log.info(this, "-loadMap()停止地图渲染");
            _map.stopRender();
            Log.info(this, "-loadMap()销毁场景中所有物体");
            _map.dispose();
            SysMapVo mapVo      = BaseDataMgr.instance.GetMapVo(mapId);
            var      resourceId = (uint)mapVo.resource_id;

            if (Application.platform == RuntimePlatform.WindowsEditor && AppNet.main.TestSceneId != 0)
            {
                resourceId = (uint)AppNet.main.TestSceneId;  //给测试场景用
            }
            Singleton <StartLoadingView> .Instance.loaderList.Clear();

            Singleton <StartLoadingView> .Instance.loaderList.Add(
                AssetManager.Instance.LoadSceneLevel(resourceId, LoadSceneCallBack));

            if (Singleton <MapMode> .Instance.IsFirstInToScene)
            {
                //第一次开始加载场景时执行的预加载:
                AddFirstSceneLoad();
            }
        }
예제 #3
0
        /**向上|向下寻找以startMapId为起点,targetMapId为目标点的场景链
         * @param startMapId  起点场景ID
         * @param targetMapId 目标点场景ID
         * @param isUp        寻找方向[true:向上寻找,false:向下寻找]
         * @return 场景链
         * **/
        private void findMapLinks(string startMapId, string targetMapId, bool isUp)
        {
            tempMapList.Clear();
            bool     result = false;
            SysMapVo mapVo  = BaseDataMgr.instance.GetMapVo(uint.Parse(startMapId));

            while (true)
            {
                //mapVo = BaseDataMgr.instance.GetMapVo(isUp ? mapVo.preId : mapVo.nextId);
                tempMapList.Add(mapVo.id.ToString());
                if (mapVo.id.Equals(targetMapId))
                {//找到
                    result = true;
                    break;
                }
                if (mapVo.type == MapTypeConst.CITY_MAP)
                {
                    break;                                     //没找到,退出
                }
            }
            if (!result)
            {
                tempMapList.Clear();
            }
        }
예제 #4
0
        private MonsterVo MonsterAdapt(MonsterVo enemyVo)
        {
            SysMapVo mapVo = BaseDataMgr.instance.GetMapVo(MeVo.instance.mapId);

            if (mapVo.adapt)
            {
                enemyVo.Level = MeVo.instance.Level;
#if false
                float zoomFactor            = 10000f;
                SysMonsterAdaptRuleVo adapt = BaseDataMgr.instance.GetMonsterAdapt((uint)MeVo.instance.Level);
                enemyVo.Level     = MeVo.instance.Level;
                enemyVo.CurHp     = (uint)(enemyVo.CurHp * adapt.hp_ratio / zoomFactor);
                enemyVo.Hp        = (uint)(enemyVo.Hp * adapt.hp_ratio / zoomFactor);
                enemyVo.AttMMax   = (uint)(enemyVo.AttMMax * adapt.att_m_max_ratio / zoomFactor);
                enemyVo.AttMMin   = (uint)(enemyVo.AttMMin * adapt.att_m_min_ratio / zoomFactor);
                enemyVo.AttPMin   = (uint)(enemyVo.AttPMin * adapt.att_p_min_ratio / zoomFactor);
                enemyVo.AttPMax   = (uint)(enemyVo.AttPMax * adapt.att_p_max_ratio / zoomFactor);
                enemyVo.DefM      = (uint)(enemyVo.DefM * adapt.def_m_ratio / zoomFactor);
                enemyVo.DefP      = (uint)(enemyVo.DefP * adapt.def_p_ratio / zoomFactor);
                enemyVo.Hit       = (uint)(enemyVo.Hit * adapt.hit_ratio / zoomFactor);
                enemyVo.Dodge     = (int)(enemyVo.Dodge * adapt.dodge_ratio / zoomFactor);
                enemyVo.Crit      = (uint)(enemyVo.Crit * adapt.crit_lvl_ratio / zoomFactor);
                enemyVo.CritRatio = (uint)(enemyVo.CritRatio * adapt.crit_hurt_ratio / zoomFactor);
                enemyVo.Flex      = (uint)(enemyVo.Flex * adapt.flex_ratio / zoomFactor);
                enemyVo.HurtRe    = (uint)(enemyVo.HurtRe * adapt.hurt_re_ratio / zoomFactor);
#endif
            }

            return(enemyVo);
        }
예제 #5
0
        /// <summary>
        /// 加载场景
        /// </summary>
        /// <param name="mapResourceId">场景ID</param>
        /// <param name="callBack">场景加载完成回调</param>
        /// <returns>场景加载对象</returns>
        public AssetBundleLoader LoadSceneLevel(uint mapResourceId, LoadAssetFinish <GameObject> callBack)
        {
            string sceneFileName = "Scene/" + mapResourceId + ".assetbundle";
            string sceneName     = mapResourceId.ToString();

            if (!loadAssetbundle)
            {
                AssetBundleLoader s = new  AssetBundleLoader("", "", typeof(GameObject));
                StartCoroutine(LoadSceneInResource(mapResourceId, callBack));
                return(s);
            }

            int[] subTypeList = { PRTypeConst.ST_SKILL, PRTypeConst.ST_SOUND };
            for (int i = 0; i < subTypeList.Length; i++)
            {
                IList <SysReadyLoadVo> preloadList = BaseDataMgr.instance.GetScenePreLoadList(mapResourceId, subTypeList[i]);
                Singleton <StartLoadingView> .Instance.PreLoadNum += preloadList.Count;
            }
            SysMapVo mapVo = BaseDataMgr.instance.GetMapVo(MeVo.instance.mapId);

            //获取要加载的怪物队列,并计算预加载数
            if (mapVo.type == MapTypeConst.COPY_MAP)
            {
                MonsterMgr.Instance.PreMonloadList = BaseDataMgr.instance.GetMonPreLoadList(MeVo.instance.mapId);
                if (MonsterMgr.Instance.PreMonloadList.Count > 0)
                {
                    Singleton <StartLoadingView> .Instance.PreLoadNum += MonsterMgr.Instance.PreMonloadList.Count;
                }
            }
            return(LoadSceneLevel(sceneFileName, sceneName, callBack));
        }
예제 #6
0
        /// <summary>
        ///     根据不同的地图类型设置玩家不同的待机状态
        /// </summary>
        private void SetHeroIdleType()
        {
            SysMapVo mapVo = AppMap.Instance.mapParser.MapVo;

            switch (mapVo.type)
            {
            case MapTypeConst.CITY_MAP:
                AppMap.Instance.me.Animator.SetFloat(Status.IDLE_TYPE, Status.NORMAL_IDLE);
                break;

            case MapTypeConst.COPY_MAP:
                AppMap.Instance.me.Animator.SetFloat(Status.IDLE_TYPE, Status.BATTLE_IDLE);
                break;
            }
        }
예제 #7
0
//		根据副本ID,打开对应的副本界面
        public void OpenCopyById(uint copyId)
        {
            SysMapVo map = BaseDataMgr.instance.GetMapVo(copyId);

            switch (map.subtype)
            {
            case 1:
                OpenMainCopyById(copyId);
                break;

            case 7:
                OpenDaemonCopyById(copyId);
                break;

            default:
                break;
            }
        }
예제 #8
0
        /// <summary>
        ///     创建传送点
        /// </summary>
        /// <param name="mapId"></param>
        private void CreateMapPoint(string mapId)
        {
            if (Convert.ToInt32(mapId) > 10000 && Convert.ToInt32(mapId) < 20000)
            {
                SysMapVo map           = BaseDataMgr.instance.GetMapVo(uint.Parse(mapId));
                string[] worldTransPos = StringUtils.GetValueListFromString(map.world_trans_pos);
                AppMap.Instance.mapParser.WorldTransPosX = float.Parse(worldTransPos[0]) * GameConst.PositionUnit;
                AppMap.Instance.mapParser.WorldTransPosY = float.Parse(worldTransPos[1]) * GameConst.PositionUnit;
                string[] TransPos = StringUtils.GetValueListFromString(map.trans_pos);
                AppMap.Instance.mapParser.TransPosX = float.Parse(TransPos[0]) * GameConst.PositionUnit;
                AppMap.Instance.mapParser.TransPosY = float.Parse(TransPos[1]) * GameConst.PositionUnit;
                //创建副本传送点
                var vo = new DisplayVo
                {
                    X                 = AppMap.Instance.mapParser.TransPosX,
                    Y                 = AppMap.Instance.mapParser.TransPosY,
                    ClothUrl          = "Model/Teleport/Empty.assetbundle",
                    ModelLoadCallBack = LoadMapPointCallBack
                };
                BaseDisplay display         = AppMap.Instance.CreateMapPoint(vo);
                var         mapPointDisplay = display as MapPointDisplay;
                if (mapPointDisplay != null)
                {
                    mapPointDisplay.jumpMapId = 20001;
                }

                //创建世界传送点
                var voWorld = new DisplayVo
                {
                    X                 = AppMap.Instance.mapParser.WorldTransPosX,
                    Y                 = AppMap.Instance.mapParser.WorldTransPosY,
                    ClothUrl          = "Model/Teleport/Empty.assetbundle",
                    ModelLoadCallBack = LoadMapPointCallBack
                };
                BaseDisplay displayWorld         = AppMap.Instance.CreateWorldMapPoint(voWorld);
                var         mapPointDisplayWorld = displayWorld as MapPointDisplay;
                if (mapPointDisplayWorld != null)
                {
                    mapPointDisplayWorld.jumpMapId = 20001;
                }
            }
        }
예제 #9
0
        void Start()
        {
            print("****StoryCameraMove  这个脚本有执行吗?");
            selfTransform = gameObject.transform;
            cameraPos     = selfTransform.position;
            TargetPos.y   = cameraPos.y;
            TargetPos.z   = cameraPos.z;

            mapFarBg1 = AppMap.Instance.mapParser.FarLayer1;

            if (null != mapFarBg1)
            {
                mapFarBg1Pos = mapFarBg1.transform.position;
            }

            cameraGapLen = (float)Screen.width / Screen.height * Camera.main.orthographicSize;

            SysMapVo vo = BaseDataMgr.instance.GetMapVo(AppMap.Instance.mapParser.MapId);

            //副本地图摄像机范围为三个阶段
            if (vo.subtype == MapTypeConst.MAIN_COPY ||
                vo.subtype == MapTypeConst.DAEMONISLAND_COPY ||
                vo.subtype == MapTypeConst.FIRST_BATTLE_COPY)
            {
                int count = AppMap.Instance.mapParser.AccumulatedStagesLength.Count;
                borderMin = cameraGapLen;
                borderMax = AppMap.Instance.mapParser.AccumulatedStagesLength[count - 1] - cameraGapLen;
            }
            else
            {
                borderMin = AppMap.Instance.mapParser.PosX + cameraGapLen;
                borderMax = AppMap.Instance.mapParser.EachStageLength[MapMode.CUR_MAP_PHASE - 1] + AppMap.Instance.mapParser.PosX - cameraGapLen;
            }

            if (MoveSpeed <= 0f)
            {
                MoveSpeed = 10f;
            }
        }
예제 #10
0
        //根据副本点返回该副本是否已开启
        public bool IsCopyOpened(uint copyId)
        {
            bool     isOpened;
            SysMapVo map = BaseDataMgr.instance.GetMapVo(copyId);

            switch (map.subtype)
            {
            case 1:
                isOpened = Singleton <CopyPointMode> .Instance.IsMainCopyOpend(copyId);

                break;

            case 7:
                isOpened = Singleton <DaemonIslandMode> .Instance.IsDaemonCopyOpened(copyId);

                break;

            default:
                isOpened = false;
                break;
            }
            return(isOpened);
        }
예제 #11
0
        public bool CheckCanUseTalentSkill()
        {
            switch (_talentSkillVo.key)
            {
            case TalentSkillType.AddMasterHp:
                if (_masterVo.CurHp < _masterVo.Hp / 2 && _masterVo.CurHp > 0 &&
                    MeController.SkillController.LeftCdTimes[0] <= 0)
                {
                    return(true);
                }
                break;

            case TalentSkillType.MakeMasterUnbeatable:
                SysMapVo mapVo = AppMap.Instance.mapParser.MapVo;
                if (_masterVo.CurHp < _masterVo.Hp * 0.3f && _masterVo.CurHp > 0 &&
                    MeController.SkillController.LeftCdTimes[0] <= 0 && mapVo.type == MapTypeConst.COPY_MAP)
                {
                    return(true);
                }
                break;
            }
            return(false);
        }
예제 #12
0
        public static void SetFBInfo(List <GameObject> fbList, int[] fbs)
        {
            UILabel fbtips = NGUITools.FindInChild <UILabel>(fbList[1].transform.parent.gameObject, "tips");

            if (fbs == null || fbs.Length == 0)
            {
                fbList[0].SetActive(false);
                fbList[1].SetActive(false);
                fbList[2].SetActive(false);

                if (fbtips != null)
                {
                    fbtips.text = "该物品暂不由关卡掉落。";
                    fbtips.gameObject.SetActive(true);
                }
                return;
            }
            if (fbtips != null)
            {
                fbtips.gameObject.SetActive(false);
            }

            //当副本产出点多于3个时,最多显示一个未开启
            if (fbs.Length > 3)
            {
            }

            for (int i = 0; i < fbList.Count; i++)
            {
                if (i < fbs.Length)
                {
                    //副本设置的问题
                    fbList[i].SetActive(true);
                    fbList[i].name = fbs[i].ToString();
                    SysMapVo mapVo = BaseDataMgr.instance.GetDataById <SysMapVo>((uint)fbs[i]);
                    if (mapVo.subtype == 7)
                    {
                        SysDaemonislandVo treeVo = BaseDataMgr.instance.GetDataById <SysDaemonislandVo>((uint)fbs[i]);
                        treeVo = BaseDataMgr.instance.GetDataById <SysDaemonislandVo>((uint)treeVo.parentId);
                        NGUITools.FindInChild <UILabel>(fbList[i], "num").text          = treeVo.name;
                        NGUITools.FindInChild <UISprite>(fbList[i], "fbicn").spriteName = "island";
                    }
                    else
                    {
                        SysDungeonTreeVo treeVo = BaseDataMgr.instance.GetDataById <SysDungeonTreeVo>((uint)fbs[i]);
                        treeVo = BaseDataMgr.instance.GetDataById <SysDungeonTreeVo>((uint)treeVo.parentId);
                        treeVo = BaseDataMgr.instance.GetDataById <SysDungeonTreeVo>((uint)treeVo.parentId);
                        NGUITools.FindInChild <UILabel>(fbList[i], "num").text          = treeVo.name;
                        NGUITools.FindInChild <UISprite>(fbList[i], "fbicn").spriteName = treeVo.icon;
                    }
                    NGUITools.FindInChild <UILabel>(fbList[i], "name").text = mapVo.name;
                    UILabel tips = NGUITools.FindInChild <UILabel>(fbList[i], "tips");
                    if (!Singleton <CopyControl> .Instance.IsCopyOpened((uint)fbs[i]))
                    {
                        tips.text  = "(未开启)";
                        tips.color = ColorConst.FONT_RED;
                        tips.transform.gameObject.SetActive(true);
                    }
                    else
                    {
                        //显示次数
                        if (mapVo.subtype == 7)
                        {
                            DaemonCopyVo copy = Singleton <DaemonIslandMode> .Instance.GetDaemonCopyInfo((uint)fbs[i]);

                            tips.text = "(" + copy.usedTimes + "/" +
                                        BaseDataMgr.instance.GetMapVo((uint)fbs[i]).enter_count + ")";
                            tips.color = ColorConst.FONT_YELLOW;
                            tips.transform.gameObject.SetActive(true);
                        }
                        else
                        {
                            tips.transform.gameObject.SetActive(false);
                        }
                    }
                }
                else
                {
                    fbList[i].SetActive(false);
                }
            }
        }
예제 #13
0
        //切换场景完成
        private void ChangeSceneOk()
        {
            uint mapId = MeVo.instance.mapId;

            CreateMapPoint(mapId.ToString(CultureInfo.InvariantCulture));
            PlayerMgr.instance.start();
            MonsterMgr.Instance.start();
            PetMgr.Instance.Start();
            if (!Singleton <MapMode> .Instance.IsFirstInToScene)
            {
                MeVo.instance.PetId = MeVo.instance.PetId;
            }
            SysMapVo mapVo = BaseDataMgr.instance.GetMapVo(mapId);

            switch (mapVo.type)
            {
            //进入城镇场景
            case MapTypeConst.CITY_MAP:
                Singleton <BattleView> .Instance.CloseView();

                Singleton <BossView> .Instance.CloseView();

                Singleton <MainView> .Instance.OpenView();

                Singleton <GoGoView> .Instance.CloseView();

                AppMap.Instance.me.Controller.ContCutMgr.StopAll();
                ViewTree.city.SetActive(true);
                ViewTree.battle.SetActive(false);
                if (Singleton <BossMode> .Instance.IsOpenRank)                           //从世界Boss出来显示奖励信息
                {
                    Singleton <BossTips> .Instance.OpenPMView();

                    Singleton <BossMode> .Instance.IsOpenRank = false;
                }
                break;

            //进入副本场景
            case MapTypeConst.COPY_MAP:
                ViewTree.city.SetActive(false);
                ViewTree.battle.SetActive(true);
                Singleton <BattleView> .Instance.OpenView();

                Singleton <MainView> .Instance.CloseView();

                //主线副本/恶魔岛副本
                if (mapVo.subtype == MapTypeConst.MAIN_COPY ||
                    mapVo.subtype == MapTypeConst.DAEMONISLAND_COPY ||
                    mapVo.subtype == MapTypeConst.FIRST_BATTLE_COPY)
                {
                    CanPlayHeroHpChangeStory    = true;
                    CanPlayMonsterHpChangeStory = true;
                    //播放进入副本语音
                    SpeechMgr.Instance.PlayEnterCopySpeech();

                    if (CanPlayCopyStory(mapId))
                    {
                        if (Singleton <StoryControl> .Instance.PlayEnterSceneStory(mapId, StartBattle))
                        {
                            enterSceneStoryPlaying = true;
                            PreSortStoryPlay();
                        }
                        else
                        {
                            StartBattle();
                        }
                    }
                    else
                    {
                        StartBattle();
                    }
                }
                else
                {
                    RefreshMonster();
                }
                break;

            case MapTypeConst.SPECIAL_MAP:
                ViewTree.city.SetActive(false);
                ViewTree.battle.SetActive(true);
                Singleton <BattleView> .Instance.OpenView();

                Singleton <MainView> .Instance.CloseView();

                RefreshMonster();
                break;
            }
            //进入地图是英雄榜
            if (mapId == MapTypeConst.ARENA_MAP)
            {
                CreateChallenger();
                //Singleton<ArenaFightView>.Instance.OpenView ();
            }
            //进入地图是金银岛
            else if (mapId == MapTypeConst.GoldSilverIsland_MAP)
            {
                CreateRobberPlayer();
                //Singleton<ArenaFightView>.Instance.OpenView ();
            }
            //进入地图是世界boss
            else if (mapId == MapTypeConst.WORLD_BOSS)
            {
                Singleton <MainView> .Instance.CloseView();

                Singleton <BossView> .Instance.OpenView();

                Singleton <BattleView> .Instance.OpenView();
            }
            Singleton <MapMode> .Instance.IsFirstInToScene = false;
            Singleton <StartLoadingView> .Instance.CloseView();

            Debug.Log("**************begin to call Fun_4_7 ();");
            Fun_4_7(null);              // grsyh
        }
예제 #14
0
        /**场景信息请求返回**/

        public void Fun_4_2(INetData data)
        {
            Log.debug(this, "-Fun_4_2 场景信息请求返回成功 ");
            if (Singleton <MapMode> .Instance.IsFirstInToScene)
            {
                AppFacde.instance.InitAfterIntoScene(); //执行第一次进入场景的初始化工作
            }

            var mapSightMsg = new MapSightMsg_4_2();
            //mapSightMsg.read(data.GetMemoryStream());
            uint mapId = DangJiTester.copyId;             //mapSightMsg.mapId; grsyh

            Log.info(this,
                     "-Fun_4_2() 本角色:" + MeVo.instance.Id + " 切换场景,从:" + AppMap.Instance.mapParser.MapId + "到:" + mapId);
            Log.info(this, "-Fun_4_2() 更新玩家位置信息");
            MeVo.instance.preMapId = AppMap.Instance.mapParser.MapId;
            if (mapId == MapTypeConst.ARENA_MAP || mapId == MapTypeConst.GoldSilverIsland_MAP)
            {
                MeVo.instance.X = 2.5f;
            }
            else
            {
                MeVo.instance.X = MeVo.instance.toX;
            }
            MeVo.instance.mapId = mapId;             //mapSightMsg.mapId; grsyh
            Log.info(this, "-Fun_4_2() 开始切换地图");
            MapMode.CUR_MAP_PHASE = mapSightMsg.phase == 0 ? (ushort)1 : mapSightMsg.phase;
            //不管成败,结束挂机
            if (AppMap.Instance.me != null)
            {
                var meAiController = AppMap.Instance.me.Controller.AiController as MeAiController;
                if (meAiController != null && meAiController.IsAi)
                {
                    meAiController.SetAi(false);
                    Singleton <BattleMode> .Instance.IsAutoSystem = false;
                }
            }
            //View 处理
            SysMapVo mapVo = BaseDataMgr.instance.GetMapVo(mapId);

            switch (mapVo.type)
            {
            //进入城镇场景
            case MapTypeConst.CITY_MAP:
                ViewTree.battle.SetActive(false);
                break;

            case MapTypeConst.COPY_MAP:
                ViewTree.city.SetActive(false);
                break;

            case MapTypeConst.SPECIAL_MAP:
                ViewTree.city.SetActive(false);
                break;
            }

            LoadMap(mapId);
            //根据场景信息生成对应的玩家信息
            Log.info(this,
                     "-Fun_4_2()进入场景玩家数量 : " + mapSightMsg.rolesEnter.Count + " 此时主角的mapId: " + MeVo.instance.mapId);
            Singleton <MapMode> .Instance.AddPlayerInMap(mapSightMsg.rolesEnter);

            Log.info(this, "-Fun_4_2()进入场景怪物数量 : " + mapSightMsg.monsEnter.Count + " 此时主角的mapId: " + MeVo.instance.mapId);
            if (mapSightMsg.monsEnter.Count > 0)
            {
                AddMonList(mapSightMsg.monsEnter);
            }
        }
예제 #15
0
        /**获取摄像机移动的目标位置**/

        private void GetTargetPos() // call by Move() by Update()
        {
            //设置目标位置和边界范围
            if (_meTransform == null)
            {
                return;
            }
            _targetX = _meTransform.position.x; // 摄像机 X 跟随 主角X轴
            _targetY = MainCameraSize;

            _targetZ = transform.position.z;

            /*]
             * if (Application.loadedLevelName == "20003") // 三维场景
             * {
             *  _targetY += _testPosY;
             *  _targetZ = (_testPosZ == -1f ? transform.position.z : _testPosZ);
             *  if (_testFieldOfView != -1f)
             *      MainCamera.fieldOfView = _testFieldOfView;
             * }
             */
            _borderMax = AppMap.Instance.mapParser.EachStageLength[MapMode.CUR_MAP_PHASE - 1] +
                         AppMap.Instance.mapParser.PosX - _offset.x; // _offset.x 差不多 半屏吧


            //自动移动到下一阶段地图时时的相应处理
            if (MapMode.AutoChangeMap && !MapMode.InStageEndStory)
            {
                if (transform.position.x >= AppMap.Instance.mapParser.PosX - _offset.x + 0.1f)
                //在玩家移动到距离本地图阶段只剩下'半个摄像机长度'时,摄像机开始加速----modify by lixi
                {
                    //在玩家视野中出现第二阶段地图时摄像机速度和修改摄像机的移动范围(每次切换地图阶段只更新一次)
                    if (_changeMapPhaseSpeedOffset <= 1.1f)
                    {
                        InitMap(); // set -> _borderMin = AppMap.Instance.mapParser.PosX + _offset.x;
                        _changeMapPhaseSpeedOffset = (_borderMin - transform.position.x) /
                                                     (AppMap.Instance.mapParser.PosX + Global.HERO_WEIGHT -
                                                      transform.position.x);
                        Log.info(this, "-check()更新摄像机最小边界和移动速度偏移量: " + _changeMapPhaseSpeedOffset);
                    }


                    if (transform.position.x >= AppMap.Instance.mapParser.PosX + _offset.x - 0.1f)
                    {
                        Log.info(this, "-check()自动移动结束,更新战斗UI阶段信息");
                        Singleton <BattleMode> .Instance.StageInfo = MapMode.CUR_MAP_PHASE + "/" +
                                                                     AppMap.Instance.mapParser.AccumulatedStagesLength
                                                                     .Count;
                        MapMode.AutoChangeMap      = false;
                        MapMode.DisableInput       = false;
                        MapMode.CanGoToNextPhase   = false;
                        MapMode.WaitRefreshMonster = false;
                        Singleton <GoGoView> .Instance.CloseView();

                        _changeMapPhaseSpeedOffset = 1;
                        Singleton <MapControl> .Instance.PlayStartStageStory();

                        //						Singleton<MapMode>.Instance.EnterNewPhase ((byte)MapMode.CUR_MAP_PHASE);
                        Singleton <MapControl> .Instance.RefreshMonster();
                    }
                }
            }
            uint     mapId = AppMap.Instance.mapParser.MapId;
            SysMapVo mapVo = BaseDataMgr.instance.GetMapVo(mapId);

            if (mapVo.type != MapTypeConst.CITY_MAP)
            {
                //Log.debug(this, "我移动的坐标点X:" + _meTransform.position.x + "    我移动的坐标点Y:" + _meTransform.position.y + "   我移动的坐标点Z:" + _meTransform.position.z);
                //bool isTrigger = AppMap.Instance.isTrigger(_meTransform.position.x, _meTransform.position.y, _meTransform.position.z);
                bool isTrigger = AppMap.Instance.isTrigger(7f, 2f, 1f);
                if (isTrigger == true && MapMode.CanGoToNextPhase == false && MapMode.IsTriggered == false)
                {
                    Log.debug(this, "天啊,我触发了一堆怪物,要死了要死了");
                    Singleton <CopyMode> .Instance.TriggerMonList();

                    MapMode.IsTriggered = true;
                }
            }

            //边界检测
            if (_targetX < _borderMin)
            {
                _targetX = _borderMin;
            }
            if (_targetX > _borderMax)
            {
                _targetX = _borderMax;
            }

            //设置摄像机移动的目标位置
            _target.x = _targetX;
            _target.y = _targetY;
            _target.z = _targetZ;
        }