| | |
| | | Vector3 _validPos = Pos;
|
| | | if (TryGetValidPos(destPos, ref _validPos))
|
| | | {
|
| | | DestPos = _validPos;
|
| | | m_SearchType = E_SearchType.Static;
|
| | | MoveTo(_validPos, keepDist);
|
| | | }
|
| | |
| | | return;
|
| | | }
|
| | |
|
| | | Vector3 _curCorner;
|
| | | Vector3 _curCorner = Pos;
|
| | |
|
| | | // 获得当前点, 一般的寻路都会产生2个点
|
| | | // 第一个点为寻路起点, 所以这里如果是第一次取
|
| | |
| | | {
|
| | | m_CornerIndex = 1;
|
| | | }
|
| | |
|
| | | if (m_Path.corners != null && m_CornerIndex < m_Path.corners.Length)
|
| | | {
|
| | | _curCorner = m_Path.corners[m_CornerIndex];
|
| | | }
|
| | |
|
| | | // 计算坐标差
|
| | | Vector3 _curPos = Pos;
|
| | |
| | | }
|
| | |
|
| | | // 判断和终点是否已经达到保持值得
|
| | | 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);
|
| | | //}
|
| | | }
|
| | | }
|
| | | }
|
| | |
| | | }
|
| | | }
|
| | |
|
| | | 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>
|