NewN_UAVPlane/Assets/Zion/Scripts/ModelFunction/Radar/Radar.cs

58 lines
1.8 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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