Advertisement
Guest User

Pathfinding

a guest
Mar 22nd, 2021
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.45 KB | None | 0 0
  1. // PATHFINDING CLASS
  2. public class CustomPathfinder : MonoBehaviour
  3. {
  4.     private class TraversalProvider : ITraversalProvider
  5.     {
  6.         public bool CanTraverse(Path path, GraphNode node)
  7.         {
  8.             // Override the default logic of which nodes can be traversed
  9.             return DefaultITraversalProvider.CanTraverse(path, node);
  10.         }
  11.  
  12.         public uint GetTraversalCost(Path path, GraphNode node)
  13.         {
  14.             // Use the default costs
  15.             return DefaultITraversalProvider.GetTraversalCost(path, node);
  16.         }
  17.     }
  18.  
  19.     public static ABPath CalculatePath(Vector3 startPos, Vector3 endPos)
  20.     {
  21.         var traversalProvider = new TraversalProvider();
  22.         ABPath path = ABPath.Construct(startPos, endPos);
  23.         path.traversalProvider = traversalProvider;
  24.         return path;
  25.     }
  26. }
  27.  
  28.  
  29. // THE UNIT THAT NEEDS TO CALCULATE A PATH AND WALK
  30. public class WalkerTest : MonoBehaviour
  31. {
  32.     public Seeker seeker;
  33.  
  34.     private void Awake()
  35.     {
  36.         seeker = GetComponent<Seeker>();
  37.     }
  38.  
  39.     // Update is called once per frame
  40.     void Update()
  41.     {
  42.         if (Keyboard.current[Key.G].wasPressedThisFrame)
  43.         {
  44.             ABPath path = CustomPathfinder.CalculatePath(transform.position, Utilities.GetMousePosition());
  45.             seeker.StartPath(path, OnPathComplete);
  46.         }
  47.     }
  48.  
  49.     public void OnPathComplete(Path p)
  50.     {
  51.         Debug.Log($"PATH FOUND");
  52.     }
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement