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>();
        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;
        }
    }
}