Ejemplo n.º 1
0
        /// <summary>
        /// Gets the skill move effect path. return 0 - effectStart path, 1 - effectEnd,2 - action
        /// </summary>
        /// <returns>The skill move effect path.0 - effectStart path, 1 - effectEnd,2 - action</returns>
        /// <param name="id">Identifier.</param>
        public List <string> GetSkillMoveEffectPath(uint id)
        {
            SkillMoveConfig skillInfo = ConfigReader.GetSkillMoveConfig((int)id);

            if (skillInfo != null)
            {
                string startPath = GameConstDefine.LoadGameSkillEffectPath + "release/" + skillInfo.effectStart;
                string endPath   = GameConstDefine.LoadGameSkillEffectPath + "release/" + skillInfo.effectEnd;
                return(new List <string>()
                {
                    startPath, endPath, skillInfo.action
                });
            }

            return(null);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 执行强制移动
        /// </summary>
        public virtual void OnExecuteForceMove()
        {
            if (RealEntity == null || this.entityType == EntityType.Building)
            {
                return;
            }

            SkillMoveConfig skillInfo = ConfigReader.GetSkillMoveConfig(EntitySkillModelId);

            if (skillInfo != null)
            {
                this.RealEntity.PlayerAnimation(skillInfo.action);
            }
            float timeSinceStartup = Time.realtimeSinceStartup;
            float fTimeSpan        = timeSinceStartup - m_pcGOSSI.fBeginTime;
            float fMoveDist        = fTimeSpan * m_pcGOSSI.fForceMoveSpeed;

            m_pcGOSSI.sServerSyncPos = m_pcGOSSI.sServerBeginPos + m_pcGOSSI.sServerDir * fMoveDist;
            float fDistToSyncPos = Vector3.Distance(m_pcGOSSI.sServerSyncPos, objTransform.position);

            if (fDistToSyncPos > 10)
            {
                objTransform.position   = m_pcGOSSI.sServerSyncPos;
                objTransform.rotation   = Quaternion.LookRotation(EntityFSMDirection);
                m_pcGOSSI.sLocalSyncDir = EntityFSMDirection;
                return;
            }
            if (fDistToSyncPos < 1)
            {
                return;
            }
            //1到10之间
            Vector3 sThisSyncDir = m_pcGOSSI.sServerSyncPos - objTransform.position;

            sThisSyncDir.Normalize();
            float   fThisMoveSpeed = m_pcGOSSI.fForceMoveSpeed;
            float   fThisSyncDist  = fThisMoveSpeed * Time.deltaTime;
            Vector3 sNewPos        = sThisSyncDir * fThisSyncDist + objTransform.position;

            this.objTransform.position = sNewPos;
            Quaternion DestQuaternion = Quaternion.LookRotation(sThisSyncDir);
            Quaternion sMidQuater     = Quaternion.Lerp(objTransform.rotation, DestQuaternion, 3 * Time.deltaTime);

            objTransform.rotation = sMidQuater;
        }
Ejemplo n.º 3
0
        //public bool CheckGuideMove(Vector3 pos) {
        //    if (!SceneGuideTaskManager.Instance().CheckObstructTaskCanMove(pos)) {
        //        RealEntity.PlayerFreeAnimation();
        //        OnCameraUpdatePosition();
        //        if (FSM != null && FSM.State != FsmState.FSM_STATE_FREE)
        //            CGLCtrl_GameLogic.Instance.EmsgToss_AskStopMove();
        //        return false;
        //    }
        //    return true;
        //}

        /// <summary>
        /// 执行强制移动
        /// (好像不能Iselfplay使用,因为没有RealEntity.Collider,暂时不知道在哪里赋值)
        /// 其他对象可以用这个状态,应该是网络慢的情况下,快速移动各对象到正确位置
        /// </summary>
        public override void OnExecuteForceMove()
        {
            //base.OnExecuteForceMove();
            Quaternion DestQuaternion = Quaternion.LookRotation(EntityFSMDirection);
            Quaternion sMidQuater     = Quaternion.Lerp(RealEntity.GetTransform().rotation, DestQuaternion, 10 * Time.deltaTime);

            RealEntity.GetTransform().rotation = sMidQuater;
            float fTimeSpan = Time.realtimeSinceStartup - m_pcGOSSI.fBeginTime;
            float fMoveDist = fTimeSpan * m_pcGOSSI.fForceMoveSpeed;

            m_pcGOSSI.sServerSyncPos = m_pcGOSSI.sServerBeginPos + m_pcGOSSI.sServerDir * fMoveDist;
            SkillMoveConfig skillInfo = ConfigReader.GetSkillMoveConfig(EntitySkillModelId);

            if (skillInfo != null)
            {
                this.RealEntity.PlayerAnimation(skillInfo.action);
            }

            //2D位置同步
            Vector3 serverPos2D = new Vector3(m_pcGOSSI.sServerSyncPos.x, 60, m_pcGOSSI.sServerSyncPos.z);
            Vector3 realPos2D   = new Vector3(RealEntity.GetTransform().position.x, 60, RealEntity.GetTransform().position.z);



            Vector3 sSyncDir = serverPos2D - realPos2D;

            sSyncDir.y = 0;
            sSyncDir.Normalize();
            float fDistToServerPos = Vector3.Distance(serverPos2D, realPos2D);
            float fThisMoveSpeed   = EntityFSMMoveSpeed;

            if (fDistToServerPos > 10)
            {
                RealEntity.GetTransform().position = m_pcGOSSI.sServerBeginPos;
                GameMethod.GetMainCamera.FixedUpdatePosition();
                return;
            }
            Vector3 pos = realPos2D + EntityFSMMoveSpeed * Time.deltaTime * sSyncDir;

            //this.realObject.transform.position = pos;
            this.RealEntity.Controller.Move(sSyncDir * m_pcGOSSI.fForceMoveSpeed * Time.deltaTime);
            GameMethod.GetMainCamera.FixedUpdatePosition();
        }
Ejemplo n.º 4
0
    public ReadSkillMoveConfig(string xmlFilePath)
    {
        //TextAsset xmlfile = Resources.Load(xmlFilePath) as TextAsset;
        ResourceItem xmlfileUnit = ResourcesManager.Instance.loadImmediate(xmlFilePath, ResourceType.ASSET);
        TextAsset    xmlfile     = xmlfileUnit.Asset as TextAsset;

        if (!xmlfile)
        {
            //Debug.LogError(" error infos: 没有找到指定的xml文件:" + xmlFilePath);
        }

        xmlDoc = new XmlDocument();
        xmlDoc.LoadXml(xmlfile.text);

        XmlNodeList infoNodeList = xmlDoc.SelectSingleNode("SkillCfg_move ").ChildNodes;

        for (int i = 0; i < infoNodeList.Count; i++)
        {//(XmlNode xNode in infoNodeList)
            if ((infoNodeList[i] as XmlElement).GetAttributeNode("un32ID") == null)
            {
                continue;
            }

            string typeName = (infoNodeList[i] as XmlElement).GetAttributeNode("un32ID").InnerText;
            //Debug.LogError(typeName);
            SkillMoveConfig skillinfo = new SkillMoveConfig();
            skillinfo.id = Convert.ToInt32(typeName);

            //SkillConfigInfo.NpcId = Convert.ToInt32(typeName);
            foreach (XmlElement xEle in infoNodeList[i].ChildNodes)
            {
                switch (xEle.Name)
                {
                    #region 搜索
                case "szName:":
                {
                    skillinfo.name = Convert.ToString(xEle.InnerText);
                }
                break;

                case "MoveBeginEffect":
                {
                    skillinfo.effectStart = Convert.ToString(xEle.InnerText);
                }
                break;

                case "MoveEndEffect":
                {
                    skillinfo.effectEnd = Convert.ToString(xEle.InnerText);
                }
                break;

                case "n32Speed":
                {
                    skillinfo.speed = Convert.ToInt32(xEle.InnerText) / 100.0f;
                }
                break;

                case "MoveAction":
                {
                    skillinfo.action = Convert.ToString(xEle.InnerText);
                }
                break;
                    #endregion
                }
            }
            ConfigReader.skillMoveInfoDic.Add(skillinfo.id, skillinfo);
        }
    }