using System.Collections; using System.Collections.Generic; using UnityEngine; /// /// 雷达控制 /// public class RadarManger : MonoBehaviour { /// /// 是否正在预演 /// public bool isStartRehearsing = false; /// /// 测试用 /// public string msg; /// /// 测试接受数据 /// private Weaponitemone weaponitemones; /// /// 雷达UI预制体 /// public GameObject RadarUiPrefab; /// /// 雷达UI /// public GameObject RadarUi; /// /// 雷达动画 /// public Animator aniRandar; /// /// 雷达UI动画播放 /// public Animator aniRandarUI; #region 雷达数据 /// /// 转台转速 /// public string TurntableSpeed; /// /// 探测距离 /// public string DetectionRange; /// /// 近盲区 /// public string NearBlindArea; /// /// 批量标处理能力 /// public string BatchStandardProcessingCapability; /// /// 探测成功率 /// public string DetectionSuccessRate; /// /// 最小探测速度 /// public string MinimumDetectionVelocity; /// /// 距离分辨率 /// public string RangeResolution; /// /// 方位分辨率 /// public string AzimuthResolution; /// /// 方位波束宽度 /// public string AzimuthBeamwidth; /// /// 俯仰波束宽度 /// public string PitchBeamwidth; #endregion public float detectionRadius = 5f; // 检测范围半径 // Start is called before the first frame update void Start() { weaponitemones = Newtonsoft.Json.JsonConvert.DeserializeObject(msg); FillInTheData(weaponitemones); aniRandar = GetComponent(); if (RadarUi == null) { CreateRadarUI(); } //InvokeRepeating("RetrievalUAV", 1, 5);//测试用 } // Update is called once per frame void Update() { if (isStartRehearsing) { } } /// /// 生成雷达UI /// void CreateRadarUI() { Transform canvas = GameObject.Find("Canvas").transform; if (canvas) { GameObject _object= Instantiate(RadarUiPrefab, canvas); RadarUi = _object; RadarUi.transform.localScale = Vector3.zero; aniRandarUI = RadarUi.GetComponent(); RadarRotationSpeed(TurntableSpeed); } } /// /// 数据写入 /// /// public void FillInTheData(Weaponitemone weaponitemone) { for (int i = 0; i < weaponitemone.data.Count; i++) { switch (weaponitemone.data[i].para_name) { case "转台转速:": TurntableSpeed = weaponitemone.data[i].para_value; RadarRotationSpeed(TurntableSpeed); break; case "探测距离:": DetectionRange = weaponitemone.data[i].para_value; break; case "近盲区:": NearBlindArea = weaponitemone.data[i].para_value; break; case "批量标处理能力:": BatchStandardProcessingCapability = weaponitemone.data[i].para_value; break; case "探测成功率:": DetectionSuccessRate = weaponitemone.data[i].para_value; break; case "最小探测速度:": MinimumDetectionVelocity = weaponitemone.data[i].para_value; break; case "距离分辨率:": RangeResolution = weaponitemone.data[i].para_value; break; case "方位分辨率:": AzimuthResolution = weaponitemone.data[i].para_value; break; case "方位波束宽度:": AzimuthBeamwidth = weaponitemone.data[i].para_value; break; case "俯仰波束宽度:": PitchBeamwidth = weaponitemone.data[i].para_value; break; default: break; } } } /// /// 雷达转动速度 /// public void RadarRotationSpeed(string speed) { float newSpeed = float.Parse(speed); if (newSpeed <= 0) return; if (aniRandar) { aniRandar.speed = (1 / newSpeed); // 改变动画的播放速度为新速度值 } if (aniRandarUI) { aniRandarUI.speed = (1 / newSpeed); // 改变动画的播放速度为新速度值 } } /// /// 检索 /// public void RetrievalUAV() { Collider[] colliders = Physics.OverlapSphere(transform.position, detectionRadius); // 检索范围内的所有碰撞体 foreach (Collider col in colliders) { if (col.transform.tag == "WRJ") { UnmannedAerialVehicle unmannedAerialVehicle = col.GetComponent(); if (unmannedAerialVehicle) { //Debug.Log("检测到无人机: " + col.name); LaserFireControlPlatformManger laserFireControlPlatformManger = LaserFireControlPlatformManger.laserFireControlPlatformMangers.Find(x=>(x!=null&&x.isLasing==false)); if (laserFireControlPlatformManger&& !laserFireControlPlatformManger.isLasing) { laserFireControlPlatformManger.targetPoint = col.transform; laserFireControlPlatformManger.Lasing(); } } } } } private void OnMouseEnter() { Debug.Log("鼠标进入"); RadarUi.transform.localScale = Vector3.one; } private void OnMouseExit() { Debug.Log("鼠标离开"); RadarUi.transform.localScale = Vector3.zero; } }