激光打击

This commit is contained in:
yulong 2024-03-31 15:52:32 +08:00
parent e092e99ad4
commit ba63fc2cb4
5 changed files with 143 additions and 65 deletions

View File

@ -1176,7 +1176,6 @@ RectTransform:
- {fileID: 5433276239701250115} - {fileID: 5433276239701250115}
- {fileID: 8129871292636694300} - {fileID: 8129871292636694300}
- {fileID: 9020723963205404447} - {fileID: 9020723963205404447}
- {fileID: 571368241678502618}
m_Father: {fileID: 8500453589301871558} m_Father: {fileID: 8500453589301871558}
m_RootOrder: 2 m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@ -1452,6 +1451,7 @@ Transform:
- {fileID: 5659378436633015230} - {fileID: 5659378436633015230}
- {fileID: 7407999243263411690} - {fileID: 7407999243263411690}
- {fileID: 7180026123191704634} - {fileID: 7180026123191704634}
- {fileID: 571368241678502618}
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_RootOrder: 0 m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@ -2703,7 +2703,7 @@ PrefabInstance:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
serializedVersion: 2 serializedVersion: 2
m_Modification: m_Modification:
m_TransformParent: {fileID: 7180026123191704634} m_TransformParent: {fileID: 8500453589301871558}
m_Modifications: m_Modifications:
- target: {fileID: 2477564191442231658, guid: ba4a837ca06ca3f4f96d140b7e44a3c5, - target: {fileID: 2477564191442231658, guid: ba4a837ca06ca3f4f96d140b7e44a3c5,
type: 3} type: 3}
@ -2718,7 +2718,7 @@ PrefabInstance:
- target: {fileID: 2477564191442231658, guid: ba4a837ca06ca3f4f96d140b7e44a3c5, - target: {fileID: 2477564191442231658, guid: ba4a837ca06ca3f4f96d140b7e44a3c5,
type: 3} type: 3}
propertyPath: m_LocalPosition.z propertyPath: m_LocalPosition.z
value: 1.28 value: 0
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 2477564191442231658, guid: ba4a837ca06ca3f4f96d140b7e44a3c5, - target: {fileID: 2477564191442231658, guid: ba4a837ca06ca3f4f96d140b7e44a3c5,
type: 3} type: 3}
@ -2763,22 +2763,22 @@ PrefabInstance:
- target: {fileID: 2477564191442231658, guid: ba4a837ca06ca3f4f96d140b7e44a3c5, - target: {fileID: 2477564191442231658, guid: ba4a837ca06ca3f4f96d140b7e44a3c5,
type: 3} type: 3}
propertyPath: m_AnchoredPosition.x propertyPath: m_AnchoredPosition.x
value: -960 value: 0
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 2477564191442231658, guid: ba4a837ca06ca3f4f96d140b7e44a3c5, - target: {fileID: 2477564191442231658, guid: ba4a837ca06ca3f4f96d140b7e44a3c5,
type: 3} type: 3}
propertyPath: m_AnchoredPosition.y propertyPath: m_AnchoredPosition.y
value: -537.51 value: 5
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 2477564191442231658, guid: ba4a837ca06ca3f4f96d140b7e44a3c5, - target: {fileID: 2477564191442231658, guid: ba4a837ca06ca3f4f96d140b7e44a3c5,
type: 3} type: 3}
propertyPath: m_SizeDelta.x propertyPath: m_SizeDelta.x
value: 120 value: 150
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 2477564191442231658, guid: ba4a837ca06ca3f4f96d140b7e44a3c5, - target: {fileID: 2477564191442231658, guid: ba4a837ca06ca3f4f96d140b7e44a3c5,
type: 3} type: 3}
propertyPath: m_SizeDelta.y propertyPath: m_SizeDelta.y
value: 20 value: 30
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 2477564191442231658, guid: ba4a837ca06ca3f4f96d140b7e44a3c5, - target: {fileID: 2477564191442231658, guid: ba4a837ca06ca3f4f96d140b7e44a3c5,
type: 3} type: 3}

View File

@ -304,19 +304,29 @@ public class EquipmentCommon : MonoBehaviour
switch (data[0]) switch (data[0])
{ {
case "DronePosition"://无人机位置信息传递 case "DronePosition"://无人机位置信息传递
Vector3 pos = new Vector3(float.Parse(data[2]), float.Parse(data[3]), float.Parse(data[4])); if (!isPlayer)
positions.Enqueue(pos); {
Vector3 pos = new Vector3(float.Parse(data[2]), float.Parse(data[3]), float.Parse(data[4]));
positions.Enqueue(pos);
}
break; break;
case "Lasing"://激光发射位置传递 case "Lasing"://
LaserFireControlPlatformManger laserFireControlPlatformManger = GetComponent<LaserFireControlPlatformManger>(); if (!isPlayer)
if (laserFireControlPlatformManger) {
laserFireControlPlatformManger.NonSelfGeneratedEmissionLaser(data); LaserFireControlPlatformManger laserFireControlPlatformManger = GetComponent<LaserFireControlPlatformManger>();
if (laserFireControlPlatformManger)
laserFireControlPlatformManger.NonSelfGeneratedEmissionLaser(data);
}
break; break;
case "Micow"://微波武器发射位置 case "Micow"://微波武器发射位置
Microwaveweapon microwaveweapon = GetComponent<Microwaveweapon>(); if (!isPlayer) {
if (microwaveweapon) Microwaveweapon microwaveweapon = GetComponent<Microwaveweapon>();
{ if (microwaveweapon)
microwaveweapon.Microwavetransmission(data); {
microwaveweapon.Microwavetransmission(data);
}
} }
break; break;
case "SingleDronePosition"://无人机攻击目标锁定 case "SingleDronePosition"://无人机攻击目标锁定

View File

@ -88,6 +88,15 @@ public class LaserFireControlPlatformManger : MonoBehaviour
/// 计时器 /// 计时器
/// </summary> /// </summary>
public float timepiece = 5; public float timepiece = 5;
/// <summary>
/// 毁伤时间_记录
/// </summary>
public float destructionTime;
/// <summary>
/// 毁伤时间_使用
/// </summary>
public float destructionTimeMy;
#endregion #endregion
@ -97,7 +106,7 @@ public class LaserFireControlPlatformManger : MonoBehaviour
/// 是否这在攻击无人机 /// 是否这在攻击无人机
/// </summary> /// </summary>
public bool isLasing = false;//判断看向无人机 public bool isLasing = false;//判断看向无人机
public bool isLasings = false;//判断时候需要攻击 public bool isLasings = true;//判断时候需要攻击
public GameObject LaserModer; public GameObject LaserModer;
public GameObject LaserPoint; public GameObject LaserPoint;
public Transform targetPoint; // 锁定目标点的Transform组件 public Transform targetPoint; // 锁定目标点的Transform组件
@ -158,7 +167,7 @@ public class LaserFireControlPlatformManger : MonoBehaviour
/// 判断物体是否在相机里面 /// 判断物体是否在相机里面
/// </summary> /// </summary>
public bool ispcamera; public bool ispcamera;
void Start() void Start()
{ {
equipmentCommon = GetComponent<EquipmentCommon>(); equipmentCommon = GetComponent<EquipmentCommon>();
@ -190,7 +199,40 @@ public class LaserFireControlPlatformManger : MonoBehaviour
void Update() void Update()
{ {
lasertime -= Time.deltaTime; if (isStartRehearsing && !targetPoint)
{
lasertime -= Time.deltaTime;
}
if (isLasings && destructionTimeMy > 0 && targetPoint != null)
{
destructionTimeMy -= Time.deltaTime;
if (InnerLaserlineRenderer)
{
InnerLaserlineRenderer.SetPosition(0, LaserPoint.transform.position); // 设置线段起点为物体位置
InnerLaserlineRenderer.SetPosition(1, targetPoint.position); // 设置线段终点为目标点
}
if (OuterLaserlineRenderer)
{
OuterLaserlineRenderer.SetPosition(0, LaserPoint.transform.position); // 设置线段起点为物体位置
OuterLaserlineRenderer.SetPosition(1, targetPoint.position); // 设置线段终点为目标点
}
Debug.LogError(destructionTimeMy);
Debug.LogError("1");
}
else
{
if (InnerLaserlineRenderer)
{
InnerLaserlineRenderer.SetPosition(0, LaserPoint.transform.position); // 设置线段起点为物体位置
InnerLaserlineRenderer.SetPosition(1, LaserPoint.transform.position); // 设置线段终点为目标点
}
if (OuterLaserlineRenderer)
{
OuterLaserlineRenderer.SetPosition(0, LaserPoint.transform.position); // 设置线段起点为物体位置
OuterLaserlineRenderer.SetPosition(1, LaserPoint.transform.position); // 设置线段终点为目标点
}
isLasing = false;
}
if (onlyOne && equipmentCommon.deviceID.Length > 10) if (onlyOne && equipmentCommon.deviceID.Length > 10)
{ {
onlyOne = false; onlyOne = false;
@ -229,6 +271,8 @@ public class LaserFireControlPlatformManger : MonoBehaviour
break; break;
case "毁伤目标累积作用时间:": case "毁伤目标累积作用时间:":
CumulativeActionTimeOfDamageTarget = weaponitemone[i].para_value; CumulativeActionTimeOfDamageTarget = weaponitemone[i].para_value;
destructionTime = float.Parse(CumulativeActionTimeOfDamageTarget);
destructionTimeMy = float.Parse(CumulativeActionTimeOfDamageTarget);
break; break;
case "干扰距离:": case "干扰距离:":
InterferenceDistance = weaponitemone[i].para_value; InterferenceDistance = weaponitemone[i].para_value;
@ -253,7 +297,7 @@ public class LaserFireControlPlatformManger : MonoBehaviour
{ {
if (targetPoint != null) if (targetPoint != null)
{ {
LaserModer.transform.DOLookAt(targetPoint.position, 0.5f).OnComplete(() => LaserModer.transform.DOLookAt(targetPoint.position, 0.3f).OnComplete(() =>
{ {
Launchanattack(); Launchanattack();
}); });
@ -271,10 +315,15 @@ public class LaserFireControlPlatformManger : MonoBehaviour
{ {
if (targetPoint != null && Receivingdistance > 0) if (targetPoint != null && Receivingdistance > 0)
{ {
if (targetPoint.GetComponent<UnmannedAerialVehicle>())
equipmentCommonDeviceID = targetPoint.GetComponent<UnmannedAerialVehicle>().unmannedAerialVehicleManage.equipmentCommon.deviceID;
Vector3 pos = camera.WorldToViewportPoint(targetPoint.position); Vector3 pos = camera.WorldToViewportPoint(targetPoint.position);
Debug.Log("攻击目标距离" + Vector3.Distance(targetPoint.position, transform.position)); Debug.Log("攻击目标距离" + Vector3.Distance(targetPoint.position, transform.position));
ispcamera = (pos.x > 0 && pos.x < 1 && pos.y > 0 && pos.y < 1 && pos.z > 0); ispcamera = (pos.x > 0 && pos.x < 1 && pos.y > 0 && pos.y < 1 && pos.z > 0);
if (Vector3.Distance(targetPoint.position, transform.position) < Receivingdistance && ispcamera) float dis = Vector3.Distance(targetPoint.position, transform.position);
Debug.Log(dis);
if (dis < Receivingdistance && ispcamera)
{ {
Debug.Log("出现在摄像机视角里面了"); Debug.Log("出现在摄像机视角里面了");
Vector3 cector = targetPoint.position - transform.position; Vector3 cector = targetPoint.position - transform.position;
@ -284,10 +333,7 @@ public class LaserFireControlPlatformManger : MonoBehaviour
Debug.Log("角度合适进行打击"); Debug.Log("角度合适进行打击");
var nowData = GetSyncData(); var nowData = GetSyncData();
MyNetMQClient.instance.Send(nowData); MyNetMQClient.instance.Send(nowData);
//_ = SyncCreateRoom.SendMessageAsync(string.Format("send2room {0}", nowData)); StartCoroutine(CastRayAndRender1());
//DeviceManager.Instance.send2roomStr.Enqueue(nowData);
//MQTTManager.instance.SendData(MQTTManager.instance.Lasing, nowData);
CastRayAndRender();
} }
else else
{ {
@ -303,25 +349,14 @@ public class LaserFireControlPlatformManger : MonoBehaviour
} }
} }
/// <summary> public IEnumerator CastRayAndRender1()
/// 激光显示
/// </summary>
public void CastRayAndRender()
{ {
isLasings = true;
if (InnerLaserlineRenderer) yield return new WaitForSeconds(destructionTime);
{ isLasings = false;
InnerLaserlineRenderer.SetPosition(0, LaserPoint.transform.position); // 设置线段起点为物体位置
InnerLaserlineRenderer.SetPosition(1, targetPoint.position); // 设置线段终点为目标点
}
if (OuterLaserlineRenderer)
{
OuterLaserlineRenderer.SetPosition(0, LaserPoint.transform.position); // 设置线段起点为物体位置
OuterLaserlineRenderer.SetPosition(1, targetPoint.position); // 设置线段终点为目标点
}
StrikeDrone(targetPoint); StrikeDrone(targetPoint);
} }
/// <summary> /// <summary>
/// 打击无人机 /// 打击无人机
/// </summary> /// </summary>
@ -330,8 +365,8 @@ public class LaserFireControlPlatformManger : MonoBehaviour
UnmannedAerialVehicle unmannedAerialVehicle = hit.GetComponent<UnmannedAerialVehicle>(); UnmannedAerialVehicle unmannedAerialVehicle = hit.GetComponent<UnmannedAerialVehicle>();
if (unmannedAerialVehicle) if (unmannedAerialVehicle)
{ {
//unmannedAerialVehicle.BeAssaulted("激光打击");
AddBao(unmannedAerialVehicle); AddBao(unmannedAerialVehicle);
destructionTimeMy = destructionTime;
StartCoroutine(LaserExtinction()); StartCoroutine(LaserExtinction());
} }
} }
@ -345,8 +380,6 @@ public class LaserFireControlPlatformManger : MonoBehaviour
string nowData = GetSyncDis(unmannedAerialVehicle); string nowData = GetSyncDis(unmannedAerialVehicle);
Debug.Log(nowData); Debug.Log(nowData);
MyNetMQClient.instance.Send(nowData); MyNetMQClient.instance.Send(nowData);
//DeviceManager.Instance.send2roomStr.Enqueue(nowData);
//MQTTManager.instance.SendData(MQTTManager.instance.DroneWasDestroyed, nowData);
string currentTime = System.DateTime.Now.ToString(); string currentTime = System.DateTime.Now.ToString();
string _log = currentTime + " " + equipmentCommon.equipmentType + "(" + equipmentCommon.deviceID + ")" + string _log = currentTime + " " + equipmentCommon.equipmentType + "(" + equipmentCommon.deviceID + ")" +
"攻击了销毁了" + unmannedAerialVehicle.unmannedAerialVehicleManage.equipmentCommon.equipmentType + "(" + unmannedAerialVehicle.unmannedAerialVehicleManage.equipmentCommon.deviceID + ")" "攻击了销毁了" + unmannedAerialVehicle.unmannedAerialVehicleManage.equipmentCommon.equipmentType + "(" + unmannedAerialVehicle.unmannedAerialVehicleManage.equipmentCommon.deviceID + ")"
@ -356,7 +389,6 @@ public class LaserFireControlPlatformManger : MonoBehaviour
Bao.transform.localPosition = Vector3.zero; Bao.transform.localPosition = Vector3.zero;
Bao.transform.SetParent(null); Bao.transform.SetParent(null);
Bao.SetActive(true); Bao.SetActive(true);
Destroy(unmannedAerialVehicle.gameObject);
} }
/// <summary> /// <summary>
@ -399,7 +431,8 @@ public class LaserFireControlPlatformManger : MonoBehaviour
/// </summary> /// </summary>
public IEnumerator LaserExtinction() public IEnumerator LaserExtinction()
{ {
yield return new WaitForSeconds(0.5f); isLasings = false;
yield return new WaitForSeconds(0.0f);
if (InnerLaserlineRenderer) if (InnerLaserlineRenderer)
{ {
InnerLaserlineRenderer.SetPosition(0, LaserPoint.transform.position); // 设置线段起点为物体位置 InnerLaserlineRenderer.SetPosition(0, LaserPoint.transform.position); // 设置线段起点为物体位置
@ -415,7 +448,7 @@ public class LaserFireControlPlatformManger : MonoBehaviour
#endregion #endregion
public string equipmentCommonDeviceID = "";
/// <summary> /// <summary>
/// 激光发射点位 /// 激光发射点位
/// </summary> /// </summary>
@ -423,10 +456,11 @@ public class LaserFireControlPlatformManger : MonoBehaviour
protected string GetSyncData() protected string GetSyncData()
{ {
Debug.Log("目标点位..:" + targetPoint.position); Debug.Log("目标点位..:" + targetPoint.position);
return string.Format("{0},{1},{2},{3},{4}", "Lasing", equipmentCommon.deviceID, targetPoint.position.x, targetPoint.position.y, targetPoint.position.z); return string.Format("{0},{1},{2},{3},{4},{5}", "Lasing", equipmentCommon.deviceID ,
targetPoint.position.x, targetPoint.position.y, targetPoint.position.z , equipmentCommonDeviceID);
} }
/// <summary> /// <summary>q
/// 非自生成激光发射台发射激光发射激光 /// 非自生成激光发射台发射激光发射激光
/// </summary> /// </summary>
/// <param name="data"></param> /// <param name="data"></param>
@ -436,19 +470,41 @@ public class LaserFireControlPlatformManger : MonoBehaviour
Vector3 vector3 = new Vector3(float.Parse(data[2]), float.Parse(data[3]), float.Parse(data[4])); Vector3 vector3 = new Vector3(float.Parse(data[2]), float.Parse(data[3]), float.Parse(data[4]));
LaserModer.transform.DOLookAt(vector3, 0.1f).OnComplete(() => LaserModer.transform.DOLookAt(vector3, 0.1f).OnComplete(() =>
{ {
if (InnerLaserlineRenderer) EquipmentCommon _equipmentCommon = DeviceManager.Instance.devices.Find(x => x.deviceID == data[5]);
if (_equipmentCommon)
{ {
InnerLaserlineRenderer.SetPosition(0, LaserPoint.transform.position); // 设置线段起点为物体位置 UnmannedAerialVehicleManage _unmannedAerialVehicleManage = _equipmentCommon.transform.GetComponent<UnmannedAerialVehicleManage>();
InnerLaserlineRenderer.SetPosition(1, vector3); // 设置线段终点为目标点 if (_unmannedAerialVehicleManage&& _unmannedAerialVehicleManage.unmannedAerialVehicles.Count>0)
{
UnmannedAerialVehicle _unmannedAerialVehicle = _unmannedAerialVehicleManage.unmannedAerialVehicles[0];
if (_unmannedAerialVehicle != null)
{
isLasings = true;
targetPoint = _unmannedAerialVehicle.transform;
destructionTimeMy = destructionTime;
}
else
{
if (InnerLaserlineRenderer)
{
InnerLaserlineRenderer.SetPosition(0, LaserPoint.transform.position); // 设置线段起点为物体位置
InnerLaserlineRenderer.SetPosition(1, vector3); // 设置线段终点为目标点
}
if (OuterLaserlineRenderer)
{
OuterLaserlineRenderer.SetPosition(0, LaserPoint.transform.position); // 设置线段起点为物体位置
OuterLaserlineRenderer.SetPosition(1, vector3); // 设置线段终点为目标点
}
}
Invoke("LaserExtinction1", destructionTime);
}
} }
if (OuterLaserlineRenderer)
{
OuterLaserlineRenderer.SetPosition(0, LaserPoint.transform.position); // 设置线段起点为物体位置
OuterLaserlineRenderer.SetPosition(1, vector3); // 设置线段终点为目标点
}
StartCoroutine(LaserExtinction());
}); });
} }
private void LaserExtinction1()
{
StartCoroutine(LaserExtinction());
}
void OnMouseDown() void OnMouseDown()
{ {

View File

@ -348,11 +348,12 @@ public class RadarManger : MonoBehaviour
bool isnearBlindArea = Vector3.Distance(transform.position, unmannedAerialVehicle.transform.position) > nearBlindArea; bool isnearBlindArea = Vector3.Distance(transform.position, unmannedAerialVehicle.transform.position) > nearBlindArea;
if (!isnearBlindArea) if (!isnearBlindArea)
continue; continue;
LaserFireControlPlatformManger laserFireControlPlatformManger = LaserFireControlPlatformManger.laserFireControlPlatformMangers.Find(x => (x != null && x.isLasing == false && x.lasertime <= 0)); LaserFireControlPlatformManger laserFireControlPlatformManger = LaserFireControlPlatformManger.laserFireControlPlatformMangers.
Find(x => (x != null && x.isLasing == false && x.lasertime <= 0));
Microwaveweapon microwaveweapon = Microwaveweapon.MicrowaveweaponList.Find(x => x != null && x.ismicow == false); Microwaveweapon microwaveweapon = Microwaveweapon.MicrowaveweaponList.Find(x => x != null && x.ismicow == false);
if (laserFireControlPlatformManger&& targets!=null) if (laserFireControlPlatformManger&& targets!=null)
{ {
laserFireControlPlatformManger.lasertime = laserFireControlPlatformManger.storageIntervalTime + 1.5f; laserFireControlPlatformManger.lasertime = laserFireControlPlatformManger.storageIntervalTime /*+ 1.5f*/;
laserFireControlPlatformManger.isLasing = true; laserFireControlPlatformManger.isLasing = true;
laserFireControlPlatformManger.targetPoint = unmannedAerialVehicle.transform; laserFireControlPlatformManger.targetPoint = unmannedAerialVehicle.transform;
laserFireControlPlatformManger.Lasing(); laserFireControlPlatformManger.Lasing();

View File

@ -8,6 +8,7 @@ using static InterfaceManager;
using System; using System;
using UnityEngine.UI; using UnityEngine.UI;
using UnityEngine.EventSystems; using UnityEngine.EventSystems;
using System.Linq;
/* /*
@ -413,9 +414,9 @@ public class TerrestrialRadioInterferenceManger : MonoBehaviour
/// </summary> /// </summary>
public void RadioDisturbance() public void RadioDisturbance()
{ {
Collider[] colliders = Physics.OverlapSphere(transform.position, detectionRadius * 1000 / 5);// 检索范围内的所有碰撞体 List<GameObject> colliders = GameObject.FindGameObjectsWithTag("WRJ").ToList().FindAll(Search);
//Collider[] colliders = Physics.OverlapSphere(transform.position, detectionRadius * 1000 / 5);// 检索范围内的所有碰撞体
for (int i = 0; i < colliders.Length; i++) for (int i = 0; i < colliders.Count; i++)
{ {
if (colliders[i].transform.tag == "WRJ") if (colliders[i].transform.tag == "WRJ")
{ {
@ -460,7 +461,17 @@ public class TerrestrialRadioInterferenceManger : MonoBehaviour
} }
} }
private bool Search(GameObject game)
{
if (Vector3.Distance(transform.position,game.transform.position)< detectionRadius * 1000 / 5)
{
return true;
}
else
{
return false;
}
}
/// <summary> /// <summary>
///上传日志 ///上传日志