少年修仙传客户端代码仓库
client_Hale
2018-10-09 5923f1dbb3b8e6ea031565385084b1f86c609b28
4078 【前端】坐骑、灵宠穿插待机优化
2个文件已修改
52 ■■■■ 已修改文件
Fight/GameActor/GActor.cs 33 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/GameActor/GActorNpcFight.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/GameActor/GActor.cs
@@ -317,6 +317,7 @@
        Vector3 _validPos = Pos;
        if (TryGetValidPos(destPos, ref _validPos))
        {
            DestPos = _validPos;
            m_SearchType = E_SearchType.Static;
            MoveTo(_validPos, keepDist);
        }
@@ -424,7 +425,7 @@
                return;
            }
            Vector3 _curCorner;
            Vector3 _curCorner = Pos;
            // 获得当前点, 一般的寻路都会产生2个点
            // 第一个点为寻路起点, 所以这里如果是第一次取
@@ -433,7 +434,11 @@
            {
                m_CornerIndex = 1;
            }
            _curCorner = m_Path.corners[m_CornerIndex];
            if (m_Path.corners != null && m_CornerIndex < m_Path.corners.Length)
            {
                _curCorner = m_Path.corners[m_CornerIndex];
            }
            // 计算坐标差
            Vector3 _curPos = Pos;
@@ -483,16 +488,11 @@
            }
            // 判断和终点是否已经达到保持值得
            Vector3 _endPos = m_Path.corners[m_Path.corners.Length - 1];
            _chkDistSqrt = MathUtility.DistanceSqrtXZ(_endPos, Pos);
            _chkDistSqrt = MathUtility.DistanceSqrtXZ(DestPos, Pos);
            if (_chkDistSqrt <= m_KeepDist * m_KeepDist)
            if ((_chkDistSqrt - m_KeepDist * m_KeepDist) <= .05f)
            {
                StopPathFind();
                //if (ServerInstID == PlayerDatas.Instance.PlayerId)
                //{
                //    Debug.LogFormat("已到达保持距离: {0} <= {1}", _chkDistSqrt, m_KeepDist * m_KeepDist);
                //}
            }
        }
    }
@@ -585,6 +585,21 @@
        }
    }
    public static void ForceCrossFade(Animator animator, int name, float transitionDuration, int layer = 0, float normalizedTime = float.NegativeInfinity)
    {
        animator.Update(0);
        if (animator.GetNextAnimatorStateInfo(layer).fullPathHash == 0)
        {
            animator.CrossFade(name, transitionDuration, layer, normalizedTime);
        }
        else
        {
            animator.Play(animator.GetNextAnimatorStateInfo(layer).fullPathHash, layer);
            animator.Update(0);
            animator.CrossFade(name, transitionDuration, layer, normalizedTime);
        }
    }
    /// <summary>
    /// 矫正服务端坐标至客户端坐标
    /// </summary>
Fight/GameActor/GActorNpcFight.cs
@@ -305,6 +305,11 @@
        NextAction = GAStaticDefine.Act_Idle;
    }
    public override void Run()
    {
        NextAction = GAStaticDefine.Act_Run;
    }
    public override void IdleImmediate()
    {
        if (m_Animator)
@@ -314,13 +319,11 @@
            {
                m_Animator.Play(GAStaticDefine.State_IdleHash);
            }
            //Debug.LogFormat("调用了 {0} 的立即站立", ServerInstID);
            if (this is GA_Pet)
            {
                Debug.LogFormat("调用了 {0} 的立即站立", ServerInstID);
            }
        }
    }
    public override void Run()
    {
        NextAction = GAStaticDefine.Act_Run;
    }
    public override void RunImmediate()
@@ -329,6 +332,10 @@
        {
            Run();
            m_Animator.Play(GAStaticDefine.State_RunHash);
            if (this is GA_Pet)
            {
                Debug.LogFormat(" ---- 调用了 {0} 的立即跑动", ServerInstID);
            }
        }
    }