Example #1
0
 public void CalculatePath(RecastPath recastPath)
 {
     if (RecastInterface.FindPath(this.MapId, recastPath.StartPos, recastPath.EndPos))
     {
         RecastInterface.Smooth(this.MapId, 2f, 0.5f);
         {
             int     smoothCount = 0;
             float[] smooths     = RecastInterface.GetPathSmooth(this.MapId, out smoothCount);
             for (int i = 0; i < smoothCount; ++i)
             {
                 Vector3 node = new Vector3(smooths[i * 3], smooths[i * 3 + 1], smooths[i * 3 + 2]);
                 recastPath.Results.Add(node);
                 //Log.Info($"路径点:{node}");
             }
         }
     }
 }
Example #2
0
 /// <summary>
 /// 修改坐标以适配Recast
 /// </summary>
 /// <param name="self"></param>
 public static void AujustSelfContentForRecast(this RecastPath self)
 {
     self.StartPos.x = -self.StartPos.x;
     self.EndPos.x   = -self.EndPos.x;
 }
Example #3
0
 /// <summary>
 /// 寻路
 /// </summary>
 public void SearchPath(int mapId, RecastPath recastPath)
 {
     GetRecastPathProcessor(mapId).CalculatePath(recastPath);
 }