This commit is contained in:
yulong 2024-01-18 15:55:41 +08:00
parent 443139d785
commit f97495d712
3 changed files with 112 additions and 90 deletions

View File

@ -10104,7 +10104,7 @@ MonoBehaviour:
FireSpeed: 20 FireSpeed: 20
explodePrefab: {fileID: 1000013462590818, guid: ecdd96beb7f93494880c052dfccf9dc1, explodePrefab: {fileID: 1000013462590818, guid: ecdd96beb7f93494880c052dfccf9dc1,
type: 3} type: 3}
Camera: {fileID: 0} camera: {fileID: 0}
RawImage: {fileID: 6102700022742998670, guid: b2cb817bb62743a4194cd9d89f07e27d, RawImage: {fileID: 6102700022742998670, guid: b2cb817bb62743a4194cd9d89f07e27d,
type: 3} type: 3}
crosshair: {fileID: 0} crosshair: {fileID: 0}

View File

@ -120,7 +120,7 @@ public class LaserFireControlPlatformManger : MonoBehaviour
/// <summary> /// <summary>
/// 十字准星架视角 /// 十字准星架视角
/// </summary> /// </summary>
public Camera Camera; public Camera camera;
/// <summary> /// <summary>
/// 十字准星架视角UI显示 /// 十字准星架视角UI显示
/// </summary> /// </summary>
@ -137,12 +137,23 @@ public class LaserFireControlPlatformManger : MonoBehaviour
/// 点击空白处碰撞器 /// 点击空白处碰撞器
/// </summary> /// </summary>
public GameObject Detection; public GameObject Detection;
/// <summary>
/// 摄像机视角开关
/// </summary>
public bool isplaser = true;
/// <summary>
/// 激光火炮打击时间
/// </summary>
public static float lasertime;
/// <summary>
/// 判断物体是否在相机里面
/// </summary>
public bool ispcamera;
void Start() void Start()
{ {
equipmentCommon = GetComponent<EquipmentCommon>(); equipmentCommon = GetComponent<EquipmentCommon>();
laserFireControlPlatformMangers.Add(this); laserFireControlPlatformMangers.Add(this);
Camera = transform.GetChild(1).GetComponent<Camera>(); camera = transform.GetChild(1).GetComponent<Camera>();
//weaponitemones = Newtonsoft.Json.JsonConvert.DeserializeObject<Weaponitemone>(msg); //weaponitemones = Newtonsoft.Json.JsonConvert.DeserializeObject<Weaponitemone>(msg);
//FillInTheData(weaponitemones);//测试写入 //FillInTheData(weaponitemones);//测试写入
// 订阅布尔值变化事件 // 订阅布尔值变化事件
@ -184,9 +195,9 @@ public class LaserFireControlPlatformManger : MonoBehaviour
// Front = true; // 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; RaycastHit hit;
if (Physics.Raycast(ray, out hit)) if (Physics.Raycast(ray, out hit))
{ {
@ -194,7 +205,7 @@ public class LaserFireControlPlatformManger : MonoBehaviour
{ {
return; 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; Transform canvas = GameObject.Find("Canvas").transform;
if (canvas) if (canvas)
@ -254,16 +265,20 @@ public class LaserFireControlPlatformManger : MonoBehaviour
{ {
while (true) while (true)
{ {
yield return new WaitForSeconds(timepiece); yield return new WaitForSeconds(lasertime);
if (timepiece!=0) if (lasertime != 0)
{ {
Laserattack(); //Laserattack();
} }
} }
} }
void LateUpdate() void LateUpdate()
{ {
if (Receivingdistance > 0 && isplaser == true)
{
camera.farClipPlane = Receivingdistance;
isplaser = false;
}
} }
@ -282,7 +297,7 @@ public class LaserFireControlPlatformManger : MonoBehaviour
{ {
case "储能间隔时间:": case "储能间隔时间:":
StorageIntervalTime = weaponitemone[i].para_value; StorageIntervalTime = weaponitemone[i].para_value;
timepiece = float.Parse(StorageIntervalTime); lasertime = float.Parse(StorageIntervalTime);
break; break;
case "毁伤目标累积作用时间:": case "毁伤目标累积作用时间:":
CumulativeActionTimeOfDamageTarget = weaponitemone[i].para_value; CumulativeActionTimeOfDamageTarget = weaponitemone[i].para_value;
@ -306,10 +321,9 @@ public class LaserFireControlPlatformManger : MonoBehaviour
/// </summary> /// </summary>
public void Laserattack() public void Laserattack()
{ {
if (Receivingdistance > 0 && targetPoint!=null) if (Receivingdistance > 0 && targetPoint != null)
{ {
Collider[] colliders = Physics.OverlapSphere(transform.position, Receivingdistance);//检查是否在打击的范围内 Collider[] colliders = Physics.OverlapSphere(transform.position, Receivingdistance);//检查是否在打击的范围内
Debug.LogError("范围打击距离:" + Receivingdistance);
for (int i = 0; i < colliders.Length; i++) for (int i = 0; i < colliders.Length; i++)
{ {
if (colliders[i].gameObject.tag == "WRJ") if (colliders[i].gameObject.tag == "WRJ")
@ -328,7 +342,7 @@ public class LaserFireControlPlatformManger : MonoBehaviour
{ {
Debug.LogError("角度没有问题进来了" + InterferenceAngle); Debug.LogError("角度没有问题进来了" + InterferenceAngle);
if (Receivingposin==null) if (Receivingposin == null)
{ {
//if (Random.value>0.5f) //if (Random.value>0.5f)
//{ //{
@ -360,7 +374,7 @@ 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) 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(); //var nowData = GetSyncData();
//_ = SyncCreateRoom.SendMessageAsync(string.Format("send2room {0}", nowData)); //_ = SyncCreateRoom.SendMessageAsync(string.Format("send2room {0}", nowData));
@ -392,8 +405,44 @@ public class LaserFireControlPlatformManger : MonoBehaviour
{ {
if (targetPoint != null) if (targetPoint != null)
{ {
Camera.transform.DOLookAt(targetPoint.position, 1.5f).SetEase(Ease.Linear); camera.transform.DOLookAt(targetPoint.position,0.5f).SetEase(Ease.Linear).OnComplete(() =>
//isLasing = false; {
Debug.LogError("看向进来了");
Launchanattack();
});
}
}
/// <summary>
/// 激光显示
/// </summary>
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) if (InnerLaserlineRenderer)
{ {
InnerLaserlineRenderer.SetPosition(0, LaserPoint.transform.position); // 设置线段起点为物体位置 InnerLaserlineRenderer.SetPosition(0, LaserPoint.transform.position); // 设置线段起点为物体位置
InnerLaserlineRenderer.SetPosition(1, Receivingposin.position); // 设置线段终点为目标点 InnerLaserlineRenderer.SetPosition(1, targetPoint.position); // 设置线段终点为目标点
} }
if (OuterLaserlineRenderer) if (OuterLaserlineRenderer)
{ {
OuterLaserlineRenderer.SetPosition(0, LaserPoint.transform.position); // 设置线段起点为物体位置 OuterLaserlineRenderer.SetPosition(0, LaserPoint.transform.position); // 设置线段起点为物体位置
OuterLaserlineRenderer.SetPosition(1, Receivingposin.position); // 设置线段终点为目标点 OuterLaserlineRenderer.SetPosition(1, targetPoint.position); // 设置线段终点为目标点
} }
StrikeDrone(Receivingposin); StrikeDrone(targetPoint);
} }
/// <summary> /// <summary>
@ -429,46 +478,7 @@ public class LaserFireControlPlatformManger : MonoBehaviour
StartCoroutine(LaserExtinction()); StartCoroutine(LaserExtinction());
} }
} }
/// <summary>
/// 激光打击位置未打中
/// </summary>
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();
}
}
/// <summary>
/// 十字准星架为打中视角
/// </summary>
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);
}
}
/// <summary>
/// 激光显示为打中
/// </summary>
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());
}
/// <summary> /// <summary>
/// 销毁单体无人机 /// 销毁单体无人机
@ -539,7 +549,7 @@ public class LaserFireControlPlatformManger : MonoBehaviour
OuterLaserlineRenderer.SetPosition(0, LaserPoint.transform.position); // 设置线段起点为物体位置 OuterLaserlineRenderer.SetPosition(0, LaserPoint.transform.position); // 设置线段起点为物体位置
OuterLaserlineRenderer.SetPosition(1, LaserPoint.transform.position); // 设置线段终点为目标点 OuterLaserlineRenderer.SetPosition(1, LaserPoint.transform.position); // 设置线段终点为目标点
} }
isLasings = false; isLasing = false;
} }
#endregion #endregion
@ -552,8 +562,8 @@ public class LaserFireControlPlatformManger : MonoBehaviour
protected string GetSyncData() protected string GetSyncData()
{ {
Debug.Log("目标点位..:" + Receivingposin.position); Debug.Log("目标点位..:" + targetPoint.position);
return string.Format("{0},{1},{2},{3},{4}", "Lasing", equipmentCommon.deviceID, Receivingposin.position.x, Receivingposin.position.y, Receivingposin.position.z); return string.Format("{0},{1},{2},{3},{4}", "Lasing", equipmentCommon.deviceID, targetPoint.position.x, targetPoint.position.y, targetPoint.position.z);
} }

View File

@ -118,6 +118,10 @@ public class RadarManger : MonoBehaviour
/// 渲染小地图摄像机 /// 渲染小地图摄像机
/// </summary> /// </summary>
public Camera Mincamera; public Camera Mincamera;
/// <summary>
/// 计时火炮蓄能时间
/// </summary>
public float radartime;
void Start() void Start()
{ {
Mincamera = GameObject.Find("Minimap Camera").GetComponent<Camera>(); Mincamera = GameObject.Find("Minimap Camera").GetComponent<Camera>();
@ -163,7 +167,7 @@ public class RadarManger : MonoBehaviour
while (true) while (true)
{ {
//Debug.Log("Timer fired at: " + Time.time); //Debug.Log("Timer fired at: " + Time.time);
yield return new WaitForSeconds(interval); // 等待一段时间后继续执行 yield return new WaitForSeconds(5); // 等待一段时间后继续执行
//RetrievalUAV(); //RetrievalUAV();
} }
} }
@ -186,9 +190,11 @@ public class RadarManger : MonoBehaviour
{ {
if (equipmentCommon.isPlayer && timerCoroutine != null) if (equipmentCommon.isPlayer && timerCoroutine != null)
{ {
StopCoroutine(timerCoroutine); StopCoroutine(timerCoroutine);
timerCoroutine = null; timerCoroutine = null;
isTimerRunning = false; isTimerRunning = false;
} }
} }
#endregion #endregion
@ -299,15 +305,21 @@ public class RadarManger : MonoBehaviour
UnmannedAerialVehicle unmannedAerialVehicle = colliders2[i].GetComponent<UnmannedAerialVehicle>(); UnmannedAerialVehicle unmannedAerialVehicle = colliders2[i].GetComponent<UnmannedAerialVehicle>();
if (unmannedAerialVehicle) if (unmannedAerialVehicle)
{ {
radartime += Time.deltaTime;
if (radartime>=LaserFireControlPlatformManger.lasertime)
{
Debug.Log("今来了");
LaserFireControlPlatformManger laserFireControlPlatformManger = LaserFireControlPlatformManger.laserFireControlPlatformMangers.Find(x => (x != null && x.isLasing == false)); LaserFireControlPlatformManger laserFireControlPlatformManger = LaserFireControlPlatformManger.laserFireControlPlatformMangers.Find(x => (x != null && x.isLasing == false));
radartime = 0;
if (laserFireControlPlatformManger) if (laserFireControlPlatformManger)
{ {
laserFireControlPlatformManger.isLasing=true; laserFireControlPlatformManger.isLasing = true;
//Debug.Log(laserFireControlPlatformManger.transform.name + "攻击无人机: " + unmannedAerialVehicle.transform.name); //Debug.Log(laserFireControlPlatformManger.transform.name + "攻击无人机: " + unmannedAerialVehicle.transform.name);
laserFireControlPlatformManger.targetPoint = unmannedAerialVehicle.transform; laserFireControlPlatformManger.targetPoint = unmannedAerialVehicle.transform;
laserFireControlPlatformManger.Crosshair(); laserFireControlPlatformManger.Crosshair();
laserFireControlPlatformManger.Lasing(); laserFireControlPlatformManger.Lasing();
} }
}
number++; number++;
} }
} }