using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class Leak2Data { public long ID; public float TimeAll; public float GravityModifierBody; public float GravityModifierShuiHua; public float GravityModifierSprayWide; public int MaxParticlesBody; public int MaxParticlesShuiHua; public int MaxParticlesSprayWide; public float Count; public int level; } public class Leak2Controller : MonoBehaviour { [Range(0, 2)] public int level; public ParticleSystem Body; public ParticleSystem ShuiHua; public ParticleSystem SprayWide; public float TimeAll; private float StartGravityBody; private float StartGravityShuiHua; private float StartGravitySprayWide; private int ParticleNumBody; private int ParticleNumShuiHua; private int ParticleNumSprayWide; private float timmer; private float count; private Leak2Data myData; public long OilTankId; void Awake() { myData = new Leak2Data(); } void Start() { var main = Body.main; var main1 = ShuiHua.main; var main2 = SprayWide.main; if (level == 0) { StartGravityBody = 10; StartGravityShuiHua = 10; StartGravitySprayWide = 5; ParticleNumBody = 4000; ParticleNumShuiHua = 800; ParticleNumSprayWide = 800; } else if (level == 1) { StartGravityBody = 30; StartGravityShuiHua = 30; StartGravitySprayWide = 15; ParticleNumBody = 3500; ParticleNumShuiHua = 700; ParticleNumSprayWide = 700; } else { StartGravityBody = 50; StartGravityShuiHua = 50; StartGravitySprayWide = 25; ParticleNumBody = 3000; ParticleNumShuiHua = 600; ParticleNumSprayWide = 600; } main.gravityModifier = StartGravityBody; main1.gravityModifier = StartGravityShuiHua; main2.gravityModifier = StartGravitySprayWide; main.maxParticles = ParticleNumBody; main1.maxParticles = ParticleNumShuiHua; main2.maxParticles = ParticleNumSprayWide; } void Update() { if (TimeAll > 0) { if (count < TimeAll) { timmer += Time.deltaTime; var main = Body.main; var main1 = ShuiHua.main; var main2 = SprayWide.main; if (timmer >= 0.5f) { if (main.gravityModifier.constant <= 70) { main.gravityModifier = main.gravityModifier.constant + (70 - StartGravityBody) / TimeAll / 2; main.maxParticles = main.maxParticles - Mathf.CeilToInt((ParticleNumBody - 2400) / TimeAll / 2); } if (main1.gravityModifier.constant <= 70) { main1.gravityModifier = main1.gravityModifier.constant + (70 - StartGravityShuiHua) / TimeAll / 2; main1.maxParticles = main1.maxParticles - Mathf.CeilToInt((ParticleNumShuiHua - 500) / TimeAll / 2); } if (main2.gravityModifier.constant <= 34) { main2.gravityModifier = main2.gravityModifier.constant + (34 - StartGravitySprayWide) / TimeAll / 2; main2.maxParticles = main2.maxParticles - Mathf.CeilToInt((ParticleNumSprayWide - 500) / TimeAll / 2); } timmer = 0; count += 0.5f; } } else { TimeAll = 0; } } } public void Initialize(Vector3 hitPoint, OilTankMessage TankMsg) { float dis = 0; RaycastHit[] AllHit = Physics.RaycastAll(hitPoint, Vector3.down, 100f, LayerMask.NameToLayer("SoliderRoad")); foreach (RaycastHit hit in AllHit) { Debug.Log(hit.transform.name + "down"); if (!hit.transform.parent.GetComponent() && hit.transform.name.Contains("Floor")) { dis = Vector3.Distance(hit.point, hitPoint); Debug.Log(dis); } } TankMsg.HasLeakeSet = true; //如果是导调组或者灾情库管理员 if ((CurrentUserInfo.room != null && CurrentUserInfo.mySelf.Id == CurrentUserInfo.room.Owner.UserInfo.Id) || GameSettings.othersSettings.mode == Mode.DisasterManagement) { if (OilSetManager.GetInstance.gameObject.activeSelf) OilSetManager.GetInstance.ChuLiangSlider.GetComponent().interactable = false; } Debug.Log((TankMsg.MyHeight - dis) + ":" + TankMsg.MyHeight); if (TankMsg.OutShowHeight - dis <= TankMsg.MyHeight / 4) { level = 2; } else if ((TankMsg.OutShowHeight - dis > TankMsg.MyHeight / 4) && (TankMsg.OutShowHeight - dis <= TankMsg.MyHeight / 1.8)) { level = 1; } else { level = 0; } Vector3 hitobjVec = TankMsg.transform.position; transform.LookAt(new Vector3(hitobjVec.x, transform.position.y, hitobjVec.z)); transform.Rotate(new Vector3(0, -180, 0)); } //public override KeyValuePair PushData() //{ // myData.ID = GetComponent().gameObjID; // myData.TimeAll = this.TimeAll; // myData.GravityModifierBody = Body.main.gravityModifier.constant; // myData.GravityModifierShuiHua = ShuiHua.main.gravityModifier.constant; // myData.GravityModifierSprayWide = SprayWide.main.gravityModifier.constant; // myData.MaxParticlesBody = Body.main.maxParticles; // myData.MaxParticlesShuiHua = ShuiHua.main.maxParticles; // myData.MaxParticlesSprayWide = SprayWide.main.maxParticles; // myData.Count = this.count; // myData.level = this.level; // return new KeyValuePair(myData.ID, myData); //} //public override void PullData(KeyValuePair data) //{ // if (GetComponent().gameObjID != data.Key) // return; // myData = (Leak2Data)data.Value; // var main = Body.main; // var main1 = ShuiHua.main; // var main2 = SprayWide.main; // main.gravityModifier = myData.GravityModifierBody; // main.maxParticles = myData.MaxParticlesBody; // main1.gravityModifier = myData.GravityModifierShuiHua; // main1.maxParticles = myData.MaxParticlesShuiHua; // main2.gravityModifier = myData.GravityModifierSprayWide; // main2.maxParticles = myData.MaxParticlesSprayWide; // this.TimeAll = myData.TimeAll; // this.level = myData.level; //} }