using System.Collections; using System.Collections.Generic; using UnityEngine; /// /// 无人机规划路径 /// public class ObjectPlanner : MonoBehaviour { public bool isPathCanBePlanned = false;//是否可以规划路径 public Camera camera; // Orthographic相机 public GameObject selectedObject; // 被选择的物体 public LineRenderer lineRenderer; // 用于绘制路线的线条 private bool isPlanning = false; // 是否正在规划路线 public UnmannedAerialVehicleManage unmannedAerialVehicleManage; void Start() { if (camera == null) camera = Camera.main; lineRenderer = GetComponent(); // 获取LineRenderer组件 // 设置线条材质和宽度 //lineRenderer.material = new Material(Shader.Find("Sprites/Default")); // 设置线条材质 lineRenderer.startWidth = 10f; // 设置线条起始宽度 lineRenderer.endWidth =10f; // 设置线条结束宽度 } void Update() { if (isPathCanBePlanned) { if (Input.GetMouseButtonDown(1)) // 检测鼠标左键是否按下 { Ray ray = camera.ScreenPointToRay(Input.mousePosition); // 从相机发射一条射线 if (Physics.Raycast(ray, out RaycastHit hit)) // 检测是否射中物体 { if (selectedObject != null && !isPlanning) // 如果已选择物体并且没有正在规划路线 { isPlanning = true; // 标记为正在规划路线 lineRenderer.positionCount = 1; // 设置线条的起点 lineRenderer.SetPosition(0, selectedObject.transform.position); } } } if (isPlanning && Input.GetMouseButton(1)) // 如果正在规划路线并且鼠标左键持续按下 { Ray ray = camera.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(ray, out RaycastHit hit)) { lineRenderer.positionCount++; // 增加线条顶点数 lineRenderer.SetPosition(lineRenderer.positionCount - 1, hit.point); // 更新线条的顶点 } } if (isPlanning && Input.GetMouseButtonUp(1)) // 如果正在规划路线并且鼠标左键释放 { isPlanning = false; // 停止规划路线 //Vector3[] positions = new Vector3[lineRenderer.positionCount]; // 创建用于存储顶点坐标的数组 //lineRenderer.GetPositions(positions); // 获取线条的顶点坐标 //if (unmannedAerialVehicleManage) //{ // for (int i = 0; i < positions.Length; i++) // { // unmannedAerialVehicleManage.positions.Enqueue(positions[i]); // unmannedAerialVehicleManage.endPosition = positions[positions.Length - 1]; // } //} } } } /// /// 设置选定无人机编队 /// /// public void SetSelectedObject(GameObject _selectedObject) { selectedObject = _selectedObject; // 选定新的物体 } }