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.
201 lines
6.9 KiB
201 lines
6.9 KiB
4 years ago
|
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;
|
||
|
//}
|
||
|
}
|