TestingPathfinding.cs 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using CodeMonkey.Utils;
  4. using UnityEngine;
  5. public class TestingPathfinding : MonoBehaviour {
  6. [SerializeField] PathfindingVisual pathfindingVisual;
  7. [SerializeField] PathfindingDebugStepVisual pathfindingDebugStepVisual;
  8. [SerializeField] LayerMask mousePlaneLayerMask;
  9. [SerializeField] Transform trackingBall;
  10. private Pathfinding pathfinding;
  11. private void Start() {
  12. pathfinding = new Pathfinding(10, 10);
  13. pathfindingVisual.SetGrid(pathfinding.GetGrid());
  14. }
  15. private void Update() {
  16. Vector3 mouseWorldPosition = GetMousePosition3d();
  17. trackingBall.position = mouseWorldPosition;
  18. if (Input.GetMouseButtonDown(0)) {
  19. // Vector3 moustWorldPosition = UtilsClass.GetMouseWorldPosition(); // funkar i 2d, inte i 3d
  20. pathfinding.GetGrid().GetXZ(mouseWorldPosition, out int x, out int z);
  21. List<PathNode> path = pathfinding.FindPath(0, 0, x, z);
  22. if (path != null) {
  23. for (int i = 0; i < path.Count - 1; i++) {
  24. Debug.DrawLine(new Vector3(path[i].x, 0, path[i].z) * 10f + new Vector3(1, 0, 1) * 5f, new Vector3(path[i + 1].x, 0, path[i + 1].z) * 10f + new Vector3(1, 0, 1) * 5f, Color.green, 10f);
  25. }
  26. }
  27. }
  28. if (Input.GetMouseButtonDown(1)) {
  29. // Vector3 mouseWorldPosition = GetMousePosition3d();
  30. pathfinding.GetGrid().GetXZ(mouseWorldPosition, out int x, out int z);
  31. pathfinding.GetNode(x, z).SetIsWalkable(!pathfinding.GetNode(x, z).isWalkable);
  32. }
  33. }
  34. private Vector3 GetMousePosition3d() {
  35. Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
  36. Physics.Raycast(ray, out RaycastHit raycastHit, float.MaxValue, mousePlaneLayerMask);
  37. return raycastHit.point;
  38. }
  39. }