You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
200 lines
6.9 KiB
200 lines
6.9 KiB
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<OilTankMessage>() |
|
&& 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<Slider>().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<long, object> PushData() |
|
//{ |
|
// myData.ID = GetComponent<CloneGameObjInfo>().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<long, object>(myData.ID, myData); |
|
//} |
|
|
|
//public override void PullData(KeyValuePair<long, object> data) |
|
//{ |
|
// if (GetComponent<CloneGameObjInfo>().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; |
|
//} |
|
}
|
|
|