From f97495d7124bc6b5cd17559c24a911e572146fcd Mon Sep 17 00:00:00 2001
From: yulong <1838206582@qq.com>
Date: Thu, 18 Jan 2024 15:55:41 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Prefebs/Models/moder/激光火控平台.prefab | 2 +-
.../LaserFireControlPlatformManger.cs | 170 +++++++++---------
.../ModelFunction/Radar/RadarManger.cs | 30 +++-
3 files changed, 112 insertions(+), 90 deletions(-)
diff --git a/Assets/GameAssets/Prefebs/Models/moder/激光火控平台.prefab b/Assets/GameAssets/Prefebs/Models/moder/激光火控平台.prefab
index 028c9381..22cd2770 100644
--- a/Assets/GameAssets/Prefebs/Models/moder/激光火控平台.prefab
+++ b/Assets/GameAssets/Prefebs/Models/moder/激光火控平台.prefab
@@ -10104,7 +10104,7 @@ MonoBehaviour:
FireSpeed: 20
explodePrefab: {fileID: 1000013462590818, guid: ecdd96beb7f93494880c052dfccf9dc1,
type: 3}
- Camera: {fileID: 0}
+ camera: {fileID: 0}
RawImage: {fileID: 6102700022742998670, guid: b2cb817bb62743a4194cd9d89f07e27d,
type: 3}
crosshair: {fileID: 0}
diff --git a/Assets/Zion/Scripts/ModelFunction/LaserFireControlPlatform/LaserFireControlPlatformManger.cs b/Assets/Zion/Scripts/ModelFunction/LaserFireControlPlatform/LaserFireControlPlatformManger.cs
index 5459a2e9..b3a9f2b2 100644
--- a/Assets/Zion/Scripts/ModelFunction/LaserFireControlPlatform/LaserFireControlPlatformManger.cs
+++ b/Assets/Zion/Scripts/ModelFunction/LaserFireControlPlatform/LaserFireControlPlatformManger.cs
@@ -120,7 +120,7 @@ public class LaserFireControlPlatformManger : MonoBehaviour
///
/// 十字准星架视角
///
- public Camera Camera;
+ public Camera camera;
///
/// 十字准星架视角UI显示
///
@@ -137,12 +137,23 @@ public class LaserFireControlPlatformManger : MonoBehaviour
/// 点击空白处碰撞器
///
public GameObject Detection;
-
+ ///
+ /// 摄像机视角开关
+ ///
+ public bool isplaser = true;
+ ///
+ /// 激光火炮打击时间
+ ///
+ public static float lasertime;
+ ///
+ /// 判断物体是否在相机里面
+ ///
+ public bool ispcamera;
void Start()
{
equipmentCommon = GetComponent();
laserFireControlPlatformMangers.Add(this);
- Camera = transform.GetChild(1).GetComponent();
+ camera = transform.GetChild(1).GetComponent();
//weaponitemones = Newtonsoft.Json.JsonConvert.DeserializeObject(msg);
//FillInTheData(weaponitemones);//测试写入
// 订阅布尔值变化事件
@@ -184,9 +195,9 @@ public class LaserFireControlPlatformManger : MonoBehaviour
// Front = true;
// }
//}
- if (UIBootstrap.Instance.GetRoleByIDPracticeId(GlobalFlag.practiceSeatId)!="0"&&Input.GetMouseButtonDown(0))
+ if (UIBootstrap.Instance.GetRoleByIDPracticeId(GlobalFlag.practiceSeatId) != "0" && Input.GetMouseButtonDown(0))
{
- Ray ray=Camera.main.ScreenPointToRay(Input.mousePosition);
+ Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit))
{
@@ -194,7 +205,7 @@ public class LaserFireControlPlatformManger : MonoBehaviour
{
return;
}
- if (hit.transform.gameObject.tag == "AttackTarget"&&hit.transform.gameObject.name == "激光火控平台(Clone)")
+ if (hit.transform.gameObject.tag == "AttackTarget" && hit.transform.gameObject.name == "激光火控平台(Clone)")
{
Transform canvas = GameObject.Find("Canvas").transform;
if (canvas)
@@ -203,9 +214,9 @@ public class LaserFireControlPlatformManger : MonoBehaviour
}
}
}
-
+
}
- }
+ }
///
/// 开启暂停激光发射武器
@@ -254,16 +265,20 @@ public class LaserFireControlPlatformManger : MonoBehaviour
{
while (true)
{
- yield return new WaitForSeconds(timepiece);
- if (timepiece!=0)
+ yield return new WaitForSeconds(lasertime);
+ if (lasertime != 0)
{
- Laserattack();
+ //Laserattack();
}
}
}
void LateUpdate()
{
-
+ if (Receivingdistance > 0 && isplaser == true)
+ {
+ camera.farClipPlane = Receivingdistance;
+ isplaser = false;
+ }
}
@@ -282,7 +297,7 @@ public class LaserFireControlPlatformManger : MonoBehaviour
{
case "储能间隔时间:":
StorageIntervalTime = weaponitemone[i].para_value;
- timepiece = float.Parse(StorageIntervalTime);
+ lasertime = float.Parse(StorageIntervalTime);
break;
case "毁伤目标累积作用时间:":
CumulativeActionTimeOfDamageTarget = weaponitemone[i].para_value;
@@ -306,10 +321,9 @@ public class LaserFireControlPlatformManger : MonoBehaviour
///
public void Laserattack()
{
- if (Receivingdistance > 0 && targetPoint!=null)
+ if (Receivingdistance > 0 && targetPoint != null)
{
Collider[] colliders = Physics.OverlapSphere(transform.position, Receivingdistance);//检查是否在打击的范围内
- Debug.LogError("范围打击距离:" + Receivingdistance);
for (int i = 0; i < colliders.Length; i++)
{
if (colliders[i].gameObject.tag == "WRJ")
@@ -328,17 +342,17 @@ public class LaserFireControlPlatformManger : MonoBehaviour
{
Debug.LogError("角度没有问题进来了" + InterferenceAngle);
- if (Receivingposin==null)
+ if (Receivingposin == null)
{
//if (Random.value>0.5f)
//{
- Receivingposin = unmannedAerialVehicle.transform;
- Debug.LogError("接收无人机的位置" + Receivingposin.position);
- var nowData = GetSyncData();
- _ = SyncCreateRoom.SendMessageAsync(string.Format("send2room {0}", nowData));
- isLasings = true;
- CastRayAndRender();
- break;
+ Receivingposin = unmannedAerialVehicle.transform;
+ Debug.LogError("接收无人机的位置" + Receivingposin.position);
+ var nowData = GetSyncData();
+ _ = SyncCreateRoom.SendMessageAsync(string.Format("send2room {0}", nowData));
+ isLasings = true;
+ CastRayAndRender();
+ break;
//}
//else
//{
@@ -358,9 +372,9 @@ public class LaserFireControlPlatformManger : MonoBehaviour
}
}
- private string GetSyncData1()
+ private string GetSyncData1()
{
- return string.Format("{0},{1},{2},{3}" + equipmentCommon.deviceID, Receivingposin.position.x+3,Receivingposin.position.y+3,Receivingposin.position.z);
+ return string.Format("{0},{1},{2},{3}" + equipmentCommon.deviceID, Receivingposin.position.x + 3, Receivingposin.position.y + 3, Receivingposin.position.z);
}
@@ -371,11 +385,10 @@ public class LaserFireControlPlatformManger : MonoBehaviour
{
if (targetPoint != null)
{
- LaserModer.transform.DOLookAt(targetPoint.position, 1.5f).OnComplete(() =>
+ LaserModer.transform.DOLookAt(targetPoint.position,0.5f).OnComplete(() =>
{
- isLasing = false;
- //CastRayAndRender();
+
});
//var nowData = GetSyncData();
//_ = SyncCreateRoom.SendMessageAsync(string.Format("send2room {0}", nowData));
@@ -389,11 +402,47 @@ public class LaserFireControlPlatformManger : MonoBehaviour
/// 十字准星架视角
///
public void Crosshair()
- {
+ {
if (targetPoint != null)
{
- Camera.transform.DOLookAt(targetPoint.position, 1.5f).SetEase(Ease.Linear);
- //isLasing = false;
+ camera.transform.DOLookAt(targetPoint.position,0.5f).SetEase(Ease.Linear).OnComplete(() =>
+ {
+ Debug.LogError("看向进来了");
+ Launchanattack();
+ });
+ }
+
+ }
+ ///
+ /// 激光显示
+ ///
+ public void Launchanattack()
+ {
+ if (targetPoint != null)
+ {
+ Vector3 pos = camera.WorldToViewportPoint(targetPoint.position);
+ ispcamera = (pos.x > 0 && pos.x < 1 && pos.y > 0 && pos.y < 1 && pos.z > 0);
+ if (ispcamera)
+ {
+ Debug.LogError("出现在摄像机视角里面了");
+ Vector3 cector = targetPoint.position - transform.position;
+ float angle = Vector3.Angle(cector, transform.forward);
+ if (float.Parse(InterferenceAngle) > angle)
+ {
+ Debug.Log("角度合适进行打击");
+ var nowData = GetSyncData();
+ _ = SyncCreateRoom.SendMessageAsync(string.Format("send2room {0}", nowData));
+ CastRayAndRender();
+ }
+ else
+ {
+ Debug.LogError("超出了角度不进行攻击");
+ }
+ }
+ else
+ {
+ Debug.LogError("飞机不在摄像机范围内");
+ }
}
}
@@ -406,14 +455,14 @@ public class LaserFireControlPlatformManger : MonoBehaviour
if (InnerLaserlineRenderer)
{
InnerLaserlineRenderer.SetPosition(0, LaserPoint.transform.position); // 设置线段起点为物体位置
- InnerLaserlineRenderer.SetPosition(1, Receivingposin.position); // 设置线段终点为目标点
+ InnerLaserlineRenderer.SetPosition(1, targetPoint.position); // 设置线段终点为目标点
}
if (OuterLaserlineRenderer)
{
OuterLaserlineRenderer.SetPosition(0, LaserPoint.transform.position); // 设置线段起点为物体位置
- OuterLaserlineRenderer.SetPosition(1, Receivingposin.position); // 设置线段终点为目标点
+ OuterLaserlineRenderer.SetPosition(1, targetPoint.position); // 设置线段终点为目标点
}
- StrikeDrone(Receivingposin);
+ StrikeDrone(targetPoint);
}
///
@@ -429,46 +478,7 @@ public class LaserFireControlPlatformManger : MonoBehaviour
StartCoroutine(LaserExtinction());
}
}
- ///
- /// 激光打击位置未打中
- ///
- public void Lasering()
- {
- if (targetPoint != null)
- {
- targetPoint.position = new Vector3(targetPoint.position.x + 5, targetPoint.position.y, transform.position.z);
- LaserModer.transform.DOLookAt(targetPoint.position, 0.5f);
- //CastRayAndRender1();
- }
- }
- ///
- /// 十字准星架为打中视角
- ///
- public void Crosshair1()
- {
- if (targetPoint != null)
- {
- targetPoint.position = new Vector3(targetPoint.position.x + 5, targetPoint.position.y, transform.position.z);
- Camera.transform.DOLookAt(targetPoint.position, 0.1f).SetEase(Ease.Linear);
- }
- }
- ///
- /// 激光显示为打中
- ///
- public void CastRayAndRender1()
- {
- if (InnerLaserlineRenderer)
- {
- InnerLaserlineRenderer.SetPosition(0, LaserPoint.transform.position); // 设置线段起点为物体位置
- InnerLaserlineRenderer.SetPosition(1, Receivingposin.position); // 设置线段终点为目标点
- }
- if (OuterLaserlineRenderer)
- {
- InnerLaserlineRenderer.SetPosition(0, LaserPoint.transform.position); // 设置线段起点为物体位置
- InnerLaserlineRenderer.SetPosition(1, Receivingposin.position); // 设置线段终点为目标点
- }
- StartCoroutine(LaserExtinction());
- }
+
///
/// 销毁单体无人机
@@ -519,7 +529,7 @@ public class LaserFireControlPlatformManger : MonoBehaviour
/// 单个无人机被销毁
///
///
- protected string GetSyncDis(UnmannedAerialVehicle unmannedAerialVehicle)
+ protected string GetSyncDis(UnmannedAerialVehicle unmannedAerialVehicle)
{
return string.Format("{0},{1},{2}", "DroneWasDestroyed", unmannedAerialVehicle.unmannedAerialVehicleManage.equipmentCommon.deviceID, unmannedAerialVehicle.serialNumber);
}
@@ -539,7 +549,7 @@ public class LaserFireControlPlatformManger : MonoBehaviour
OuterLaserlineRenderer.SetPosition(0, LaserPoint.transform.position); // 设置线段起点为物体位置
OuterLaserlineRenderer.SetPosition(1, LaserPoint.transform.position); // 设置线段终点为目标点
}
- isLasings = false;
+ isLasing = false;
}
#endregion
@@ -551,10 +561,10 @@ public class LaserFireControlPlatformManger : MonoBehaviour
///
protected string GetSyncData()
{
-
- Debug.Log("目标点位..:" + Receivingposin.position);
- return string.Format("{0},{1},{2},{3},{4}", "Lasing", equipmentCommon.deviceID, Receivingposin.position.x, Receivingposin.position.y, Receivingposin.position.z);
-
+
+ Debug.Log("目标点位..:" + targetPoint.position);
+ return string.Format("{0},{1},{2},{3},{4}", "Lasing", equipmentCommon.deviceID, targetPoint.position.x, targetPoint.position.y, targetPoint.position.z);
+
}
diff --git a/Assets/Zion/Scripts/ModelFunction/Radar/RadarManger.cs b/Assets/Zion/Scripts/ModelFunction/Radar/RadarManger.cs
index 0c7e45e5..d67be88a 100644
--- a/Assets/Zion/Scripts/ModelFunction/Radar/RadarManger.cs
+++ b/Assets/Zion/Scripts/ModelFunction/Radar/RadarManger.cs
@@ -118,6 +118,10 @@ public class RadarManger : MonoBehaviour
/// 渲染小地图摄像机
///
public Camera Mincamera;
+ ///
+ /// 计时火炮蓄能时间
+ ///
+ public float radartime;
void Start()
{
Mincamera = GameObject.Find("Minimap Camera").GetComponent();
@@ -163,7 +167,7 @@ public class RadarManger : MonoBehaviour
while (true)
{
//Debug.Log("Timer fired at: " + Time.time);
- yield return new WaitForSeconds(interval); // 等待一段时间后继续执行
+ yield return new WaitForSeconds(5); // 等待一段时间后继续执行
//RetrievalUAV();
}
}
@@ -186,9 +190,11 @@ public class RadarManger : MonoBehaviour
{
if (equipmentCommon.isPlayer && timerCoroutine != null)
{
+
StopCoroutine(timerCoroutine);
timerCoroutine = null;
isTimerRunning = false;
+
}
}
#endregion
@@ -299,20 +305,26 @@ public class RadarManger : MonoBehaviour
UnmannedAerialVehicle unmannedAerialVehicle = colliders2[i].GetComponent();
if (unmannedAerialVehicle)
{
- LaserFireControlPlatformManger laserFireControlPlatformManger = LaserFireControlPlatformManger.laserFireControlPlatformMangers.Find(x => (x != null && x.isLasing == false));
- if (laserFireControlPlatformManger)
+ radartime += Time.deltaTime;
+ if (radartime>=LaserFireControlPlatformManger.lasertime)
{
- laserFireControlPlatformManger.isLasing=true;
- //Debug.Log(laserFireControlPlatformManger.transform.name + "攻击无人机: " + unmannedAerialVehicle.transform.name);
- laserFireControlPlatformManger.targetPoint = unmannedAerialVehicle.transform;
- laserFireControlPlatformManger.Crosshair();
- laserFireControlPlatformManger.Lasing();
+ Debug.Log("今来了");
+ LaserFireControlPlatformManger laserFireControlPlatformManger = LaserFireControlPlatformManger.laserFireControlPlatformMangers.Find(x => (x != null && x.isLasing == false));
+ radartime = 0;
+ if (laserFireControlPlatformManger)
+ {
+ laserFireControlPlatformManger.isLasing = true;
+ //Debug.Log(laserFireControlPlatformManger.transform.name + "攻击无人机: " + unmannedAerialVehicle.transform.name);
+ laserFireControlPlatformManger.targetPoint = unmannedAerialVehicle.transform;
+ laserFireControlPlatformManger.Crosshair();
+ laserFireControlPlatformManger.Lasing();
+ }
}
number++;
}
}
-
+
}
}