using System.Collections; using System.Collections.Generic; using UnityEngine; public class Radar : MonoBehaviour { public int numRays = 360; // 雷达射线数量 public float maxDistance = 10f; // 雷达探测的最大距离 public float rotationSpeed = 10f; // 雷达旋转速度 private LineRenderer lineRenderer; private float angleStep; void Start() { lineRenderer = GetComponent(); lineRenderer.positionCount = numRays + 1; // 设置顶点数量(加1是为了闭合线条) angleStep = 360f / numRays; // 计算每个射线之间的角度间隔 // 设置LineRenderer的宽度和颜色 lineRenderer.startWidth = 0.05f; lineRenderer.endWidth = 0.05f; lineRenderer.startColor = Color.green; lineRenderer.endColor = Color.green; // 启动雷达扫描协程 StartCoroutine(Scan()); } IEnumerator Scan() { while (true) { for (int i = 0; i <= numRays; i++) { float angle = i * angleStep; Vector3 direction = Quaternion.Euler(0f, angle, 0f) * transform.forward; // 计算射线方向 RaycastHit hit; if (Physics.Raycast(transform.position, direction, out hit, maxDistance)) { lineRenderer.SetPosition(i, hit.point); // 如果射线命中物体,将顶点位置设置为命中点 } else { lineRenderer.SetPosition(i, transform.position + direction * maxDistance); // 如果射线未命中物体,将顶点位置设置为最大距离处 } } // 旋转雷达 transform.Rotate(0f, rotationSpeed * Time.deltaTime, 0f); yield return null; } } }